「二八定律」:百分之八十的访问会落到百分之二十的热点数据上
内存容量建议设置在总数据量的 15%~30%
Redis 设置最大缓存容量:
config set maxmemory 4gb
8 中淘汰策略:
当 Redis 缓存使用超过 maxmemory,不进行数据淘汰,同时 Redis 不在提供写服务。一般不使用这个配置策略。
当缓存写满或数据过期时,进行数据淘汰
LRU : least recently used 最近最少使用。实现大致逻辑是,将所有数据以链表形式组织,最近访问的数据移动至表头,当数据写满时,删除队尾数据(淘汰),存在 2 个问题:
1: 需要额外的链表管理所有数据 2: 当大量数据访问时,会进行频繁的链表移动
Redis 对经典 LRU 算法进行简化,Redis 记录没有数据最近一次的访问时间戳,当进行数据淘汰时,随机选出 N 个元素作为淘汰候选集,然后比较 N 个数据的 lru 字段,把最小的数据从缓存中淘汰删除。
候选集挑选规则: 进入候选集的数据的 lru 字段必须小于当前候选集中的最小 lru 值。
配置项 maxmemory-samples 用于配置候选集 N 的数据个数:
config set maxmemory-samples 100