Redission核心代码流程使用Promise模式。 这归功于netty优秀的架构,是Redission提供异步和同步编程的核心。
//创建redis客户端
Redisson redisson =(Redisson) Redisson.create();
//创建RBucket对象
RBucket<String> bucket = redisson .getBucket("test1");
//设置对象
bucket.set("someValue");
//获取结果
String bucketObject = bucket.get();
System.out.println("bucketObject:"+bucketObject);
这篇博客主要详细介绍Redission提供的RBucket 类。
/**
* Any object holder
* @author Nikita Koksharov
*/
public interface RBucket<V> extends RExpirable, RBucketAsync<V>
{
V get();
void set(V value);
void set(V value, long timeToLive, TimeUnit timeUnit);
@Deprecated
boolean exists();
}
RBucket提供set()和sget()方法用于保存和获取对象。RedissonBucket 是对RBucket对象的实现。RedissonBucket实现set()和get()同步方法和异步方法。
public class RedissonBucket<V> extends RedissonExpirable implements RBucket<V> {
protected RedissonBucket(CommandAsyncExecutor connectionManager, String name) {
super(connectionManager, name);
}
protected RedissonBucket(Codec codec, CommandAsyncExecutor connectionManager, String name) {
super(codec, connectionManager, name);
}
@Override
public V get() {
return get(getAsync());
}
@Override
public Future<V> getAsync() {
return commandExecutor.readAsync(getName(), codec, RedisCommands.GET, getName());
}
@Override
public void set(V value) {
get(setAsync(value));
}