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