Redis分布式锁如何实现?
Redis
是一内存
Key-Value
数据库, 现在一般都用它来做缓存服务.目前在一次生产环境中使用了它做业务缓存, 主要用的使用场景是: 抽奖活动, 活动中对于不同的奖项有奖品数量限制, 这就相当于是一个抢购的功能一般, 由于后端的服务是分布式的, 这便衍生出一个问题, 这个奖品数量的控制如何实现? 参考了下一些网友的经验, 发现他们大部分都是使用
Redis
的
SETNX
命令+
sleep
实现类似锁的概念. 但
sleep
的方法似乎会造成一些不必要的资源消耗, 官方推荐的是使用
Redisson
(
Java
语言), 它已经实现了
RLock
, 不过我们已经使用了
Jedis
实现对
Redis
操作. 不知道大家对此场景有更加好的建议? 如果有使用过
Redisson
和
Jedis
经验最好, 可以一起分析讨论下两者的差异与优缺点.谢谢.
莫吸哥鸡肉卷
9 years, 5 months ago
Answers
这里有网友写的Redis分布式锁的策略
基于Redis实现分布式锁
Jedis是没有实现分布式锁的,官方后来才引入Ression作为推荐的Java客户端,自己实现的话可能会有许多bug,在开发的阶段不建议,有空可以看看Ression实现分布式锁的源码,或者看看能不能把源码拿过来改改,改用Jedis做连接。
wwssxx
answered 9 years, 5 months ago