Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。其中包括BitSet
, Set
, Multimap
, SortedSet
, Map
, List
, Queue
, BlockingQueue
, Deque
, BlockingDeque
, Semaphore
, Lock
, AtomicLong
, CountDownLatch
, Publish/Subscribe
, Bloom filter
, Remote service
, Spring cache
, Executor service
, Live Object service
, Scheduler service
。Redisson提供了使用Redis的最简单和最便捷的方法。
配置
程序化配置方法
Redisson程序化的配置方法是通过构建Config
对象实例来实现的。例如:
1 | Config config = new Config(); |
文件方式配置
Redisson既可以通过用户提供的JSON或YAML格式的文本文件来配置,也可以通过含有Redisson专有命名空间的,Spring框架格式的XML文本文件来配置。
通过JSON或YAML格式配置
Redisson的配置文件可以是JSON格式或YAML格式。可以通过调用Config.fromJSON
方法并指定一个File
实例来实现读取JSON格式的配置:
1 | Config config = Config.fromJSON(new File("config-file.json")); |
调用Config.toJSON
方法可以将一个Config
配置实例序列化为一个含有JSON数据类型的字符串:
1 | Config config = new Config(); |
也通过调用config.fromYAML
方法并指定一个File
实例来实现读取YAML格式的配置:
1 | Config config = Config.fromYAML(new File("config-file.yaml")); |
调用config.toYAML
方法可以将一个Config
配置实例序列化为一个含有YAML数据类型的字符串:
1 | Config config = new Config(); |
通过Spring XML命令空间配置
Redisson为Spring框架提供了一套通过命名空间来配置实例的方式。
一个Redisson的实例可以通过这样的方式来配置:
1 | <redisson:client> |
集群模式
集群模式除了适用于Redis集群环境,也适用于任何云计算服务商提供的集群模式。
程序化配置集群的用法:
1 | Config config = new Config(); |
云托管模式
云托管模式适用于任何由云计算运营商提供的Redis云服务。
程序化配置云托管模式的方法如下:
1 | Config config = new Config(); |
单Redis节点模式
程序化配置方法:
1 | // 默认连接地址 127.0.0.1:6379 |
哨兵模式
程序化配置哨兵模式的方法如下:
1 | Config config = new Config(); |
主从模式
程序化配置主从模式的用法:
1 | Config config = new Config(); |
程序接口调用方式
Redisson为每个操作都提供了自动重试策略,当某个命令执行失败时,Redisson会自动进行重试。自动重试策略可以通过修改retryAttempts
(默认值:3)参数和retryInterval
(默认值:1000毫秒)参数来进行优化调整。当等待时间达到retryInternal
指定的时间间隔以后,将自动重试下一次。全部重试失败以后将抛出错误。
Redisson实例本身和Redisson框架提供的所有对象都是线程安全的。
Redisson框架提供的几乎所有对象都包含了同步和和异步相互匹配的方法。这些对象都可以通过RedissonClient
接口获取。同时还为大部分Redisson对象提供了满足异步流处理标准的程序接口RedissonReactiveClient
。
以下是关于使用RAtomicLong
对象的范例:
1 | RedissonClient client = Redisson.create(config); |
异步执行方式
几乎所有的Redisson对象都实现了一个异步接口,异步接口提供的方法名称与其同步接口的方法名称相互匹配。例如:
1 | // RAtomicLong接口继承了RAtomicLongAsync接口 |
异步执行的方法都会返回一个实现了RFuture
接口的对象。通过向这个对象添加监听器可以实现非阻塞的执行方式。
1 | // JDK 1.8+ 适用 |
1 | // JDK 1.6+ 适用 |
异步流执行方式
Redisson提供了满足Reactor项目的异步流处理标准的程序接口。所有Redisson异步流对象都可以通过一个单独的RedissonReactiveClient
接口来获取。该功能要求JDK 7或以上版本。使用范例如下:
1 | RedissonReactiveClient client = Redisson.createReactive(config); |
也可以在RxJavaReactiveStreams项目的帮助下,通过使用RxJava标准来达到使用异步流处理标准的目的。例如:
1 | RMap<String, Integer> map = client.getMap("mapMap"); |
https://github.com/redisson/redisson/wiki/1.-概述
https://github.com/redisson/redisson/wiki/2.-配置方法
https://github.com/redisson/redisson/wiki/3.-程序接口调用方式