我是Redis+Spring的新手。两者之间有什么区别
stringRedisTemplate.boundValueOps(key).setIfAbsent("STARTED", timeout)
stringRedisTemplate.boundValueOps(key).set("STOPPED", timeout);
和
stringRedisTemplate.opsForValue().setIfAbsent(key, "STARTED", timeout)
stringRedisTemplate.opsForValue().set(key, "STOPPED", timeout);
我的问题是前者附加新值,而后者替换它。我在这里错过了什么?
创建(原子方式(一个简单的字符串值并不断更新它的正确方法是什么?谢谢。
BoundValueOperations
和ValueOperations
之间没有真正的区别,除了BoundValueOperations
不需要每个操作的密钥,因为它在内部保留密钥并委托给ValueOperations
应用非常值。
BoundValueOperations<String, String> keyBoundOps = stringRedisTemplate.boundValueOps(key);
keyBoundOps.setIfAbsent("STARTED", timeout);
keyBoundOps.set("STOPPED", timeout);
当涉及到特定命令时,请查看 SET 的 Redis 文档,其中包含不同的选项,如NX
(仅在密钥不存在时才设置密钥(和 SETEX。
setIfAbsent("STARTED", timeout)
->SET key STARTED EX timeout NX
.set("STOPPED", timeout)
->SETEX key timeout STOPPED
.
您可以使用 MONITOR 查看到达服务器的所有命令。
如果其中一个操作发送了错误的命令时出现问题,请在错误跟踪器中提交票证。