A collection of 3 posts

redis中scan命令的实现

在一个天朗气清的日子,小灰登上了线上的redis打算查询数据。然而他只记得前缀而不知道整个键是多少,于是在命令行敲入了“keys xxx*”命令。 瞬间服务卡死,报警邮件堆满了邮箱,而小灰,只能目瞪狗呆的等待着即将降临的case study。 基本上,keys *命令都是在线上是被运维禁止的。 redis的键在键值对大小大于hash-max-ziplist-value且个数小于hash-max-ziplist-entries的时候,是存放在散列表数据结构中的,在运行keys命令的时候,需要遍历数据库键空间,把所有键都取出来后与keys后面的pattern匹配。 ...

redis缓存

缓存的三种问题 缓存穿透:大批量请求不存在的key,导致数据库压力增大。【解决方案】:布隆过滤器。 缓存击穿:同一时间大批量请求一个过期的key,导致这些请求在同一时间访问数据库。【解决方案】:获取数据库后回写这个过程申请分布式锁,只有一个请求能获取后回写,其他一直重试等待。 缓存雪崩:同一时间大批量key过期。【解决方案】:设置expire time的时候随机加1~5分钟的超时。 数据库和缓存一致性解决: ...

Redis分布式锁

todo: https://learnku.com/articles/4211/unlock-the-correct-position-of-the-redis-lock https://juejin.im/post/5cc165816fb9a03202221dd5 https://crossoverjie.top/2018/03/29/distributed-lock/distributed-lock-redis/ ...