分布式缓存-Redis

语言: CN / TW / HK

为什么这么快?

纯内存

单线程,避免了多线程上下文切换

IO多路复用

应用场景

setnx实现分布式锁

zset实现延时队列

如订单超时未支付,取消订单,恢复库存。

生产者:新下的订单放入延时队列,score为到期处理时间。

消费者:用一个线程轮询延时队列,判断当前时间是否超过到期时间,若超出,则从队列中删除订单。

过期策略

定时

定期

惰性

redis:定期+惰性

内存淘汰机制

noeviction

allkeys-lru

allkeys-random

volatile-lru

volatile-random

votatile-ttl

持久化

底层数据结构

渐进式rehash

传统的hash表在扩容迁移数据(rehash)时,如果hash表数据量很大,一次性拷贝到新表中,务必耗费很长时间。

何为渐进式rehash? 就是把拷贝节点数据的过程平摊到后续的操作中,而不是一次性拷贝。

缓存雪崩、缓存穿透、缓存击穿

分享到: