分布式锁
zyufocus
热爱生活,热爱技术
展开
-
RedisTemplate+lua脚本实现redis分布式锁
前言redis本身属于弱事务,同一个线程向redis提交的指令,并不一定会紧挨着执行,这就会产生数据安全问题。但由于redis是单线程执行指令的,所以只要能将多个指令打包到一起,就可以保证多个操作的原子性。并且redis是支持lua脚本的,会一次性将lua脚本中的所有指令全部顺序执行完毕,中间不会插入其他线程提交的指令。鉴于以上特性,使用RedisTemplate+lua脚本实现一把可重入的分布式锁,且支持设定锁时间。lua脚本准备上锁的脚本-- 加锁脚本-- key1:要加锁的名称 ar原创 2020-06-13 14:25:28 · 1375 阅读 · 0 评论 -
java使用zookeeper实现分布式锁的两种方式
前言在同一个运行的项目(同一个JVM)中,并发操作时,可以使用jdk提供的synchronize或者lock显示锁来控制线程安全。但是放到分布式环境下,这种方式就玩不转了,必须要用到分布式锁。实现分布式锁的方式数据库(性能较低)redis(可能出现死锁)zookeeper(实现难度较大)使用zookeeper实现分布式锁的两种方式基于zookeeper的异常处理机制(性能损耗较大,会出现多个线程同时竞争的情况)基于zookeeper顺序节点的互相监听机制(公平锁)代码实现使用原创 2020-06-10 20:07:52 · 871 阅读 · 0 评论