
redis
文章平均质量分 78
埃泽漫笔
OceanBase开源项目ODC(OceanBase Developer Center)的核心贡献者,Github地址:https://github.com/oceanbase/odc,希望大家能赏脸支持下我们OceanBase公司的开源项目,点亮一颗小星星就行。
Maven中央仓库OceanBase开源组件 https://central.sonatype.com/artifact/com.oceanbase/db-browser 和 https://central.sonatype.com/artifact/com.oceanbase/ob-sql-parser 的核心贡献者。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用SETNX实现分布式锁
(2)性能较高:由于SETNX命令的执行原子性,保证了分布式锁的正确性,而且在Redis中,SETNX命令是单线程执行的,所以性能较高。利用Redis的单线程特性,在多个Redis客户端同时通过SETNX命令尝试获取锁,如果返回1表示获取锁成功,否则表示获取锁失败。客户端释放锁的时候,需要先判断该锁是否仍然属于该客户端,如果是,则通过DEL命令释放锁。(1)锁无法续期:如果加锁方在加锁后的执行时间较长,而锁的超时时间设置的较短,可能导致锁被误释放。(1)实现简单:SETNX命令实现简单,易于理解和使用。原创 2025-01-30 23:30:36 · 335 阅读 · 0 评论 -
Redis实现分布锁的时需要考虑哪些问题
当使用集群模式部署的时候,如果master一个客户端在master节点加锁成功了,然后没来得及同步数据到其他节点上,他就挂了, 那么这时候如果选出一个新的节点,再有客户端来加锁的时候,就也能加锁成功,因为数据没来得及同步,新的master会认为这个key是不存在的。但是有的是,代码如果执行的比较慢的话,比如设置的超时时间是3秒,但是代码执行了5秒,那么就会导致在第三秒的时候,key超时了就自动解锁了,那么其他的线程就可以拿到锁了,这时候就会发生并发的问题了。所以,我们需要有一个好的办法来解决。原创 2025-01-30 23:10:12 · 911 阅读 · 0 评论