redis-lock

  1. redis分布式锁
    1. 背景
    2. 基于缓存
    3. redisson分布式锁

redis分布式锁

背景

一个任务往往部署在多台机器上,为了保证数据不重复,要求在同一时刻,同一任务只在一个节点上执行,既保证某一方法同一时刻只能被一个线程执行

基于缓存

基于redis命令
实现原理:

  1. 加锁:执行setnx,若成功再执行expire添加过期时间
  2. 解锁:执行delete命令

优点:实现简单,相比数据库和分布式系统,方案最轻,性能最好
缺点:

  • setnex和expire分两步,非原子操作,可能出现死锁
  • delete命令存在误删除非当前线程持有的锁的可能
  • 不支持阻塞等待,不可重入

redisson分布式锁

单点模式,主从模式,哨兵模式,集群模式


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。