我看了这个链接,官方就分布式锁的实现上,java的就是redission

来源:4-20 观摩一下大神们对高可用分布式锁的争论

洪小才

2023-03-20

那也就是红锁这种算法,已经内嵌到redission里面了,这样的理解对吗?
还有,我看网络上经常有人把redlock和redisssion分开来?
我这边梳理我的知识点,就是如果是单个redis的话,使用redison是单节点,那么使用多节点的话,redission里面是有不同模式可以挑选?默认是走红锁吗?
还请老师解答一下
传送门就是课堂对应的链接地址现在转发的实际地址:
redis分布式锁

写回答

1回答

大能老师

2023-03-20

我们从官网的这段话就可以看到,Redlock是一种用Redis来实现分布式锁的算法

//img.mukewang.com/szimg/6418714709f94e5a15280220.jpg

而 Redisson - Redis Java client,是一个操作Redis的客户端,并且它对Redlock算法进行了实现。也就是它不仅仅是Redlock算法的实现,它还包含很多其他的功能。

并且,我们从 Redisson github主页介绍可以看到:

//img.mukewang.com/szimg/6418719b097a0f1915440058.jpg

也就是它可以支持各种模式,包括单机、主从、哨兵、集群。

而具体使用哪种模式,是根据我们的部署情况来决定的,并在在代码里面连接Redis的时候就进行指定。

RedissonClient redisson = Redisson.create();
Config config = new Config();
config.useSingleServer() // 单机
.setAddress("127.0.0.1:6379"); 
RedissonClient redisson = Redisson.create(config);


Config config = new Config();
config.useMasterSlaveServers() // 主从
.setMasterAddress("redis://127.0.0.1:6379")
.addSlaveAddress("redis://127.0.0.1:6389");
RedissonClient redisson = Redisson.create(config);


Config config = new Config();
config.useSentinelServers() //哨兵
.setMasterName("mymaster")
.addSentinelAddress("redis://127.0.0.1:26389","redis://127.0.0.1:26379")
.addSentinelAddress("redis://127.0.0.1:26319");
RedissonClient redisson = Redisson.create(config);


Config config = new Config();
config.useClusterServers() // 集群
.setScanInterval(2000) 
.addNodeAddress("redis://127.0.0.1:7000", "redis://127.0.0.1:7001")
.addNodeAddress("redis://127.0.0.1:7002");
RedissonClient redisson = Redisson.create(config);


1
0

Java分布式架构设计与开发实战

项目贯穿式讲解,真正将理论与实战相结合

325 学习 · 74 问题

查看课程