2018-09-03 Redis notes

Summary from Redis 深度历险

分布式锁

  1. 原子问题 To ensure the automic
setnx lock:beihanz true 
expire lock:beihanz 5
--> 
set lock:beihanz true ex 5 nx 
  1. 超时问题
    Redis 的分布式锁不能解决超时问题,如果在加锁和释放锁之间的逻辑执行的太长,以至于超出了锁的超时限制,就会出现问题。因为这时候锁过期了,第二个线程重新持有了这把锁,但是紧接着第一个线程执行完了业务逻辑,就把锁给释放了,第三个线程就会在第二个线程逻辑执行完之间拿到了锁。
    解决方案:使用随机数作为锁,然后再释放锁的时候判断是不是当前随机数。
  2. 实现可重入
    使用ThreadLocal 记录当前锁的计数

延时队列

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 应用篇 1、Redis分布式锁 超时问题 如果在加锁和释放锁之间的逻辑执行的太长,以至于超出了锁的超时限制,就会出...
    技术灭霸阅读 605评论 0 3
  • Redis系列之进阶篇(上) 前言 这篇文章主要内容是: 分布式锁 延时队列 位图 HyperLogLog本文所学...
    可苯阅读 399评论 0 1
  • 概述 通过redis实现分布式锁是一种比较常见的方式,分布式锁一般使用的是setnx(set if not exi...
    酷癫阅读 241评论 0 0
  • Redis 雾里看花 P1 Redis不就是一个kv缓存,有什么可说? Redis里面提供了丰富的数据类型和功能,...
    governlee阅读 337评论 0 0
  • 夜莺2517阅读 127,759评论 1 9