美文网首页
Redis读书笔记

Redis读书笔记

作者: zhaosyong | 来源:发表于2020-05-06 22:53 被阅读0次

    Redis分布式锁

    1.分布式应用进行逻辑处理时经常会遇到并发问题。为了保持系统操作原子性,需要进行分布式锁的使用

    1.1 加锁

    分布式加锁指令:setnx (set if not exists)

    setnx lock:codehole true
    
    del lock:codehole
    
    1.2 锁加上过期时间expire 超时问题

    为了释放的锁的原子性,锁key可以用随机数或者uuid等唯一性
    分布式加锁指令:set lock uuid true ex extimer nx

    set lock:codehole true ex 5 nx
    
    del lock:codehole
    

    释放锁的原子性

    if redis.call("get",KEYs[1])==ARGV[1] then
      return redis.call("del",KEYS[1])
    else
      return 0
    end
    
    1.3.Redission封装 三步实现分布式锁

    redission实现原理
    是通过Lua脚本 保持指令的原子性。

    1.redission.getLock(lockKey) //获取锁
    2.redission.lock();//可配置参数 设置过期时间和超时时间等 trylock()
    3.redission.unlock();//  释放锁
    

    借用一张图:图片来源:https://www.jianshu.com/p/2d3bf2ff2315

    image.png
    1.4.Redlock实现redis集群的锁

    redlock可以解决redis集群的分布式锁的主从同步问题,但是性能不太好。

    相关文章

      网友评论

          本文标题:Redis读书笔记

          本文链接:https://www.haomeiwen.com/subject/bunpghtx.html