gpt4 book ai didi

redis - Spring "Redis String Template"追加值而不是替换

转载 作者:可可西里 更新时间:2023-11-01 11:23:08 25 4
gpt4 key购买 nike

我是 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);

我的问题是前者附加新值而后者替换它。我在这里错过了什么?
创建(原子地)一个简单的字符串值并不断更新它的正确方法是什么?谢谢。

最佳答案

BoundValueOperationsValueOperations 之间没有真正的区别,除了 BoundValueOperations 不需要key以及每个操作,因为它在内部保留 key 并委托(delegate)给 ValueOperations 来应用这个值。

BoundValueOperations<String, String> keyBoundOps = stringRedisTemplate.boundValueOps(key);
keyBoundOps.setIfAbsent("STARTED", timeout);
keyBoundOps.set("STOPPED", timeout);

当涉及到特定命令时,请查看 SET 的 Redis 文档使用不同的选项,例如NX(仅在 key 不存在时设置)和SETEX .

setIfAbsent("STARTED", timeout) -> SET key STARTED EX timeout NX.
set("STOPPED", timeout) -> SETEX 键超时已停止

您可以使用 MONITOR 查看所有到达服务器的命令.

如果发送错误命令的操作之一存在问题,请在错误中提交工单 tracker .

关于redis - Spring "Redis String Template"追加值而不是替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57688562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com