返回介绍

3. 程序接口调用方式

发布于 2025-02-21 21:07:12 字数 3149 浏览 0 评论 0 收藏 0

RedissonClientRedissonReactiveClientRedissonRxClient 实例本身和 Redisson 提供的所有分布式对象都是线程安全的。

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

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

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

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

RedissonReactiveClient client = Redisson.createReactive(config);
RAtomicLongReactive longObject = client.getAtomicLong('myLong');
// 异步流执行方式
Mono<Boolean> result = longObject.compareAndSet(3, 401);
RedissonRxClient client = Redisson.createRx(config);
RAtomicLongRx longObject= client.getAtomicLong("myLong");
// RxJava2 方式
Flowable<Boolean result = longObject.compareAndSet(3, 401);

3.1. 异步执行方式

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

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

异步执行的方法都会返回一个实现了 RFuture 接口的对象。该对象同时提供了 java.util.concurrent.CompletionStagejava.util.concurrent.Future 两个异步接口。


future.whenComplete((res, exception) -> {
    // ...
});
// 或者
future.thenAccept(res -> {
    // 处理返回
}).exceptionally(exception -> {
    // 处理错误
});

3.2. 异步流执行方式

Redisson 为大多数分布式数据结构提供了满足 Reactor 项目的 异步流处理标准 的程序接口。该接口通过两种方式实现:

基于 Project Reactor 标准的实现方式。使用范例如下:

RedissonReactiveClient client = Redisson.createReactive(config);
RAtomicLongReactive atomicLong = client.getAtomicLong("myLong");
Mono<Boolean> cs = longObject.compareAndSet(10, 91);
Mono<Long> get = longObject.get();

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

基于 RxJava2 标准的实现方式。使用范例如下:

RedissonRxClient client = Redisson.createRx(config);
RAtomicLongRx atomicLong = client.getAtomicLong("myLong");
Single<Boolean> cs = longObject.compareAndSet(10, 91);
Single<Long> get = longObject.get();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文