redis内存淘汰策略及如何配置
参考:https://zhuanlan.zhihu.com/p/102513831
Redis内存淘汰策略
将Redis用作缓存时,如果内存空间用满,就会自动驱逐老的数据。
为什么要使用内存淘汰策略呢?
当海量数据涌入redis,导致redis装不下了咋办,我们需要根据redis的内存淘汰策略,淘汰一些不那么重要的key,来满足大量数据的存入。
Redis六种淘汰策略
- noeviction:当内存使用达到阈值的时候,所有引起申请内存的命令会报错。
- allkeys-lru:在主键空间中,优先移除最近未使用的key。(推荐)
- volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。
- allkeys-random:在主键空间中,随机移除某个key。
- volatile-random:在设置了过期时间的键空间中,随机移除某个key。
- volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除。
白话文翻译
- noeviction:当内存使用达到阈值的时候,执行命令直接报错
- allkeys-lru:在所有的key中,优先移除最近未使用的key。(推荐)
- volatile-lru:在设置了过期时间的键空间中,优先移除最近未使用的key。
- allkeys-random:在所有的key中,随机移除某个key。
- volatile-random:在设置了过期时间的键空间中,随机移除某个key。
- volatile-ttl:在设置了过期时间的键空间中,具有更早过期时间的key优先移除。
如何配置Redis淘汰策略
-
找到redis.conf文件
设置Redis 内存大小的限制,我们可以设置maxmemory ,当数据达到限定大小后,会选择配置的策略淘汰数据
比如:maxmemory 300mb。 -
设置内存淘汰具体使用那种策略
设置Redis的淘汰策略。比如:maxmemory-policy volatile-lru