redis内存满了怎么办?

redis内存满了怎么办?

May 8, 2024
Redis

maxmemory #

redis 设置最大使用内存 maxmemory,默认资源超过maxmemory后,不允许新key加入

7种淘汰策略 #

volatile-lru:淘汰那些设置了过期时间且最近最少被访问的数据
volatile-random:随机淘汰,腾出坑位给新人;
volatile-ttl:淘汰设置了过期时间key,谁最接近时间就先淘汰谁

allkeys-lru:淘汰最近最少上一线干活的职员;
allkeys-lfu:淘汰最少上一线干活的公务员;
allkeys-random:随机淘汰职员,为新兵腾出空位。

淘汰执行过程 #

客户端发送新命令到服务端;
服务端收到客户端命令,Redis 检查内存使用情况,如果大于 maxmemory 限制,则根据策略驱逐数据。执行新命令,否则执行新命令

使用场景 #

allkeys-lru 使用场景有明显的冷热数据区分,充分利用 LRU 算法把最近最常访问的数据保留,有限的内存提高访问性能
allkeys-random 使用场景数据没有明显的冷热分别,所有的数据分布查询比较均衡,让其随机选择淘汰数据
volatile-lru 业务场景有一些数据不能删除,比如置顶新闻、视频,这时候我们为这些数据不设置过期时间,这样的话数据就不会被删除,该策略就会去根据 LRU 算法去淘汰那些设置了过期时间且最近最少被访问的数据