redis 做分布式锁
2024-10-21 17:22:35
ok 我们从最基础的一步步来
加锁:
1.setNx没有expire,拿锁线程挂掉后,死锁
2.setNx然后exipre分两步做,setNx后redis宕机,或者线程挂掉,死锁
3.SETNX resource_name my_random_value PX 30000 加锁和过期原子操作 ok
解锁:
1.直接delete,可能因为业务超时删掉其他线程获得的锁
2.先get,对比唯一id后再delete,分2步做不是原子操作,不能保证delete的时候唯一id还是get是的那个
3.lua或者事务 原子操作get和delete,ok
超时:
1.业务超时,导致之前线程持有的锁过期,其他线程重新获得锁进入临界区,调大锁的超时时间,但是又会有线程挂掉,锁过期释放时间较长的问题
主宕机锁没有同步到从,从变主后导致多个线程获得锁
1.有个redLock的思想,把加锁成功的条件变成多master集群中超过半数的机器加锁成功,才算获得锁。简直了
最新文章
- html5shiv.js and respond.min.js
- 请求WebApi的几种方式
- Ubuntu 14 常用“快捷键”,Ctrl + Alt + F1 进入终端,按 Ctrl + Alt + F7 回到界面
- 运行QQ出现initialization failure 0x0000000c错误和浏览器上不了网
- 谷歌的网页排序算法(PageRank Algorithm)
- 我的NopCommerce之旅(6): 应用启动
- 在iOS7中修改状态栏字体的颜色
- 根据CSV更新AD对象的属性
- 构造高度自适应的textarea
- 转:svn命令行操作
- R语言 关联规则
- 超市RFID结算系统项目进度与总结
- 关于wxpython多线程研究包括(import Publisher错误研究)
- 《算法4》2.1 - 插入排序算法(Insertion Sort), Python实现
- 自制权限框架(一)jsp标签
- VMWare 鼠标无法点击 的问题
- layer中每次用到都要查来查去的功能
- P1230 智力大冲浪
- CSS-弹性布局-伪类选择器-复杂选择器
- Java-Java面向对象程序设计