gpt4 book ai didi

redis - redisson rbucket中的trySet方法有什么用

转载 作者:IT王子 更新时间:2023-10-29 06:12:55 26 4
gpt4 key购买 nike

我现在正在学习Redisson,我有一个例子如下:

public class TestRedisson {
public static void main(String[] args) {

Config config = new Config();
config.useSingleServer().setAddress("//localhost:6379");

RedissonClient redisson = Redisson.create(config);
RBucket<String> bucket = redisson.getBucket("test");
bucket.set("123");

boolean isUpdated = bucket.compareAndSet("123", "4934");
System.out.println("isUpdated:" + isUpdated);
System.out.println(bucket.get());

String prevObject = bucket.getAndSet("321");
System.out.println("prevObject:" + prevObject);
System.out.println(bucket.get());

boolean isSet = bucket.trySet("901");
System.out.println("isSet:" + isSet);
System.out.println(bucket.get());

long objectSize = bucket.size();
System.out.println(objectSize);
redisson.shutdown();
}
}

结果是:

isUpdated:true
4934
prevObject:4934
321
isSet:false
321
5

我对 trySet 方法的用法感到困惑,为什么在这个例子中失败了,我在 Redisson API 文档中没有找到任何关于这个方法的解释,另一个问题是为什么objectSize5?由于 bucket 的值现在是 321,我认为 objectSize 应该是 3

最佳答案

我自己也在研究这个。

从文档上看是这样的:

Try to save objects mapped by Redis key. If at least one of them is already exist then don't set none of them.

所以如果bucket已经有一个对象,trySet会失败并返回false。如果桶是空的,trySet会成功并设置值。

https://static.javadoc.io/org.redisson/redisson/3.4.1/org/redisson/api/RBuckets.html#trySet-java.util.Map-

关于redis - redisson rbucket中的trySet方法有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51276593/

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