简介
redission 提供了大量的分布式操作工具,操作很方便。基于Java实用工具包中常用接口,为使用者提供了一系列具有分布式特性的常用工具类。
Redisson在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常用工具类。使得原本作为协调单机多线程并发程序的工具包获得了协调分布式多机多线程并发系统的能力,大大降低了设计和研发大规模分布式系统的难度。同时结合各富特色的分布式服务,更进一步简化了分布式环境中程序相互之间的协作。
maven的pom依赖配置
<!-- https://mvnrepository.com/artifact/org.redisson/redisson -->
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.11.1</version>
</dependency>
单主机模式
Config config = new Config();
config.useSingleServer().setAddress("redis://192.168.98.100:6379");
RedissonClient redisson = Redisson.create(config);
哨兵模式
Config config = new Config();
config.useSentinelServers().setMasterName("mymaster");
String hosts = "192.168.242.128:28021,192.168.242.128:28022,192.168.242.128:28023";
Arrays.stream(hosts.split(",")).forEach(host-> config.useSentinelServers().addSentinelAddress("redis://"+ host));
RedissonClient redisson = Redisson.create(config);
集群模式
Config config = new Config();
String hosts = "192.168.242.128:8201,192.168.242.128:8202,192.168.242.128:8203";
Arrays.stream(hosts.split(",")).forEach(host-> config.useClusterServers().addNodeAddress("redis://"+ host));
redisson = Redisson.create(config);
哨兵模式连接的地址是哨兵的地址,而集群模式的地址是主节点的地址
其他
使用redission很方便实现分布式锁,代码如下
// 获取RedissonClient
RedissonClient redissonClient = Redisson.create(config);
// 设置锁定资源名称
RLock disLock = redissonClient.getLock("mylock");
boolean isLock;
try {
//尝试获取分布式锁,500ms获取锁,锁过期时间15000ms
isLock = disLock.tryLock(500, 15000, TimeUnit.MILLISECONDS);
if (isLock) {
//实现代码
}
} catch (Exception e) {
} finally {
// 最后要解锁
disLock.unlock();
}
后面尝试一下使用jedis实现分布式锁,那个为了达到操作的原子性,就需要注意很多细节的问题。
欢迎关注我的公众号