6.1. 通用对象桶(Object Bucket)

Redisson的分布式RBucketJava对象是一种通用对象桶可以用来存放任类型的对象。 除了同步接口外,还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。

  1. RBucket<AnyObject> bucket = redisson.getBucket("anyObject");
  2. bucket.set(new AnyObject(1));
  3. AnyObject obj = bucket.get();
  4. bucket.trySet(new AnyObject(3));
  5. bucket.compareAndSet(new AnyObject(4), new AnyObject(5));
  6. bucket.getAndSet(new AnyObject(6));

还可以通过RBuckets接口实现批量操作多个RBucket对象:

  1. RBuckets buckets = redisson.getBuckets();
  2. List<RBucket<V>> foundBuckets = buckets.find("myBucket*");
  3. Map<String, V> loadedBuckets = buckets.get("myBucket1", "myBucket2", "myBucket3");
  4. Map<String, Object> map = new HashMap<>();
  5. map.put("myBucket1", new MyObject());
  6. map.put("myBucket2", new MyObject());
  7. // 利用Redis的事务特性,同时保存所有的通用对象桶,如果任意一个通用对象桶已经存在则放弃保存其他所有数据。
  8. buckets.trySet(map);
  9. // 同时保存全部通用对象桶。
  10. buckets.set(map);