为什么这么快?
纯内存
单线程,防止了多线程上下文切换
IO 多路复用
利用场景
setnx 实现分布式锁
zset 实现延时队列
如订单超时未领取,勾销订单,复原库存。
生产者:新下的订单放入延时队列,score 为到期解决工夫。
消费者:用一个线程轮询延时队列,判断以后工夫是否超过到期工夫,若超出,则从队列中删除订单。
过期策略
定时
定期
惰性
redis:定期 + 惰性
内存淘汰机制
noeviction
allkeys-lru
allkeys-random
volatile-lru
volatile-random
votatile-ttl
长久化
底层数据结构
渐进式 rehash
传统的 hash 表在扩容迁徙数据 (rehash) 时,如果 hash 表数据量很大,一次性拷贝到新表中,务必消耗很长时间。
何为渐进式 rehash?就是把拷贝节点数据的过程平摊到后续的操作中,而不是一次性拷贝。