Redis:redission 源代码剖析3 future模式


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));
    }
 
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值