Redisson官方文档 - 3. 程序接口调用方式

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redisson框架提供的几乎所有对象都包含了同步和异步相互匹配的方法。这些对象都可以通过RedissonClient接口获取。同时还为大部分Redisson对象提供了满足异步流处理标准的程序接口RedissonReactiveClient。

Redisson为每个操作都提供了自动重试策略,当某个命令执行失败时,Redisson会自动进行重试。自动重试策略可以通过修改retryAttempts(默认值:3)参数和retryInterval(默认值:1000毫秒)参数来进行优化调整。当等待时间达到retryInterval指定的时间间隔以后,将自动重试下一次。全部重试失败以后将抛出错误。

Redisson实例本身和Redisson框架提供的所有对象都是线程安全的。

Redisson框架提供的几乎所有对象都包含了同步和异步相互匹配的方法。这些对象都可以通过RedissonClient接口获取。同时还为大部分Redisson对象提供了满足异步流处理标准的程序接口RedissonReactiveClient

以下是关于使用RAtomicLong对象的范例:

RedissonClient client = Redisson.create(config);
RAtomicLong longObject = client.getAtomicLong('myLong');
// 同步执行方式
longObject.compareAndSet(3, 401);
// 异步执行方式
longObject.compareAndSetAsync(3, 401);

RedissonReactiveClient client = Redisson.createReactive(config);
RAtomicLongReactive longObject = client.getAtomicLong('myLong');
// 异步流执行方式
longObject.compareAndSet(3, 401);

3.1. 异步执行方式

几乎所有的Redisson对象都实现了一个异步接口,异步接口提供的方法名称与其同步接口的方法名称相互匹配。例如:

// RAtomicLong接口继承了RAtomicLongAsync接口
RAtomicLongAsync longObject = client.getAtomicLong("myLong");
RFuture<Boolean> future = longObject.compareAndSetAsync(1, 401);

异步执行的方法都会返回一个实现了RFuture接口的对象。通过向这个对象添加监听器可以实现非阻塞的执行方式。

// JDK 1.8+ 适用
future.whenComplete((res, exception) -> {
    // ...
});
// 或者
future.thenAccept(res -> {
    // 处理返回
}).exceptionally(exception -> {
    // 处理错误
});
// JDK 1.6+ 适用
future.addListener(new FutureListener<Boolean>() {
    @Override
    public void operationComplete(Future<Boolean> future) throws Exception {
         if (future.isSuccess()) {
            // 取得结果
            Boolean result = future.getNow();
            // ...
         } else {
            // 对发生错误的处理
            Throwable cause = future.cause();
         }
    }
});

3.2. 异步流执行方式

Redisson提供了满足Reactor项目的异步流处理标准的程序接口。所有Redisson异步流对象都可以通过一个单独的RedissonReactiveClient接口来获取。该功能要求JDK 7或以上版本。使用范例如下:

RedissonReactiveClient client = Redisson.createReactive(config);
RAtomicLongReactive longObject = client.getAtomicLong("myLong");

Publisher<Boolean> csPublisher = longObject.compareAndSet(10, 91);

Publisher<Long> getPublisher = longObject.get();

也可以在RxJavaReactiveStreams项目的帮助下,通过使用RxJava标准来达到使用异步流处理标准的目的。
例如:

RMap<String, Integer> map = client.getMap("mapMap");
Observable<Integer> observable = RxReactiveStreams.toObservable(map.put("1", 324));
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
并行计算 Java 数据处理
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
SpringBoot高级并发实践:自定义线程池与@Async异步调用深度解析
183 0
|
7月前
|
NoSQL Java Redis
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
495 0
|
NoSQL Java 网络安全
Redisson官方文档 - 2. 配置方法
Redisson客户端配置方法
32147 0
Redisson官方文档 - 15. 项目依赖列表
Redisson采用了常见的若干项目作为依赖,比如Netty、Jackson等等。
3131 0
|
JSON API 开发者
Retrofit笔记 | 简析官方API文档(结合示例代码)
Retrofit笔记 | 简析官方API文档(结合示例代码)
|
前端开发 Java 程序员
如何在SpringBoot中优雅地重试调用第三方API?
如何在SpringBoot中优雅地重试调用第三方API?
331 0
|
消息中间件 JSON 负载均衡
feign 调用常见问题避坑指南!
feign 调用常见问题避坑指南!
feign 调用常见问题避坑指南!
|
缓存 NoSQL Java
使用JetCache的异步API访问Redis缓存
本文介绍了JetCache的异步API,通过异步方式访问缓存可以提升性能,降低RT。 JetCache的异步API和同步API是完全兼容的,甚至用同步的开发方式也能获得一部分异步带来的好处。
4317 0
|
算法
【优雅代码】17-guava限流源码解析
承接前一篇章的guava精选方法
【优雅代码】17-guava限流源码解析