redis的大部分使用场景都是分布式场景,不管是主从复制还是哨兵模式,亦或是cluster集群模式。
网上也有很多锁的方案
-
方案一:SETNX + EXPIRE
-
方案二:SETNX + value值是(系统时间+过期时间)
-
方案三:使用Lua脚本(包含SETNX + EXPIRE两条指令)
-
方案四:SET的扩展命令(SET EX PX NX)
-
方案五:SET EX PX NX + 校验唯一随机值,再释放锁
-
方案六: 开源框架~Redisson
-
方案七:多机实现的分布式锁Redlock
上述方案中,1-5都是通过redis.call执行redis原生命令或者lua脚本的,抛开方案本身的可行性,其本身的代码可维护性,可阅读性也不大。
什么是redisson?
首先Redission提供了使用Redis的最简单和最便利的方法,可以认为Redission是对redis更好的封装。
Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而是开发者能将精力更集中地放在业务上。
Redisson 是一个在 Redis 的基础上实现的 Java 驻内存数据网格(In-Memory Data Grid)。
IMDG,将内存作为首要存储介质。IMDG特性能够总结为下面几点:
1.数据是分布式存储在多台serve