我现在正在学习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文档中找不到这个方法的任何解释,另一个问题是为什么objectSize是5?由于桶的值现在是321,所以我认为objectSize应该是3。
发布于 2018-09-17 19:10:09
我自己也在调查这个。
从文件中看,它说:
尝试保存由Redis键映射的对象。如果其中至少有一个已经存在,那么不要设置任何一个。
因此,如果存储桶已经有一个对象,trySet将失败并返回false。如果桶是空的,trySet将成功并设置值。
https://stackoverflow.com/questions/51276593
复制相似问题