Redis分布式锁+事务
2022-3-10 Mr Chang 面试题
-
特性
-
互斥性:同一时刻只能有一个线程持有锁
-
可重入性:同一节点上的同一个线程如果获取了锁之后能够再次获取锁
-
锁超时:和J.U.C中的锁一样支持锁超时,防止死锁
-
高性能和高可用:枷锁和解锁需要高效,同时也需要保证高可用,防止分布式锁失效
-
具备阻塞和非阻塞性:能够及时从阻塞状态中被唤醒
2. 使用 set key value [EX seconds][PX milliseconds][NX|XX]
get key 获取锁 del key 删除锁
3. Redis 事务
事务的几个基础命令
multi------ 标记一个事务的开始
exec-------标记一个事务块内命令的执行
discard-----取消事务块内的所有命令
watch----监听(1个或多个)key,如果在事务执行之前这个(或多个)key被其他命令所改动,那么事务将被打断
unwatch----取watch命令对所有keys 的监听
提交/放弃事务之后,会自动unwatch,无需手动unwatch
Redis不支持事务回滚机制,某个命令出现了错误,不会影响前后的命令执行
发表评论: