为了账号安全,请及时绑定邮箱和手机立即绑定

Redis分布式锁如何实现?

Redis分布式锁如何实现?

慕桂英546537 2019-04-14 10:18:31
Redis是一内存Key-Value数据库,现在一般都用它来做缓存服务.目前在一次生产环境中使用了它做业务缓存,主要用的使用场景是:抽奖活动,活动中对于不同的奖项有奖品数量限制,这就相当于是一个抢购的功能一般,由于后端的服务是分布式的,这便衍生出一个问题,这个奖品数量的控制如何实现?参考了下一些网友的经验,发现他们大部分都是使用Redis的SETNX命令+sleep实现类似锁的概念.但sleep的方法似乎会造成一些不必要的资源消耗,官方推荐的是使用Redisson(Java语言),它已经实现了RLock,不过我们已经使用了Jedis实现对Redis操作.不知道大家对此场景有更加好的建议?如果有使用过Redisson和Jedis经验最好,可以一起分析讨论下两者的差异与优缺点.谢谢.
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

用于计数的redsi应该是单点吧,redis中的DECR是原子性的操作,通过执行后,查看是否<0来判断是否还有余量;为什么要用锁呢,请指出;
                            
查看完整回答
反对 回复 2019-04-14
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

这里有网友写的Redis分布式锁的策略基于Redis实现分布式锁
Jedis是没有实现分布式锁的,官方后来才引入Ression作为推荐的Java客户端,自己实现的话可能会有许多bug,在开发的阶段不建议,有空可以看看Ression实现分布式锁的源码,或者看看能不能把源码拿过来改改,改用Jedis做连接。
                            
查看完整回答
反对 回复 2019-04-14
  • 2 回答
  • 0 关注
  • 323 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信