redis缓存的淘汰策略
redis是项目缓存大户,可以说90以上的项目都用它。但是redis也好比一个容器,如果满了总是需要处理后续流入的数据,是该将前面流入的数据删除,还是直接不让后面的数据流入,又或者将最久没有使用的数据删除,或将使用频率低的数据删除,或删除剩余生存时间短的数据?这些都需要按实际情况进行选择?
1 直接不让后面的数据流入(noeviction)
这种适合数据不能被容许被丢弃的情况,也就是将redis作为持久化存储了。目前在我做的项目中还是有用到这种情况。
2 最久没有使用的数据删除(allkeys-Iru)
对所有key做LRU淘汰,不管有没有设置TTL。这是最常用的策略之一,适合纯缓存场景。
3 使用频率低的数据删除(allkeys-lfu)
是基于访问频率淘汰,比LRU更能应对突发流量。allkeys-lfu现在是推荐的默认策略。
4 删除剩余生存时间短的key(volatile-ttl)
优先删除剩余生存时间短的key,适用于大量短期key的堆积场景。
如何设置:直接设置redis配置文件永久生效
▼js复制代码# 先设置最大内存(必须先设 maxmemory,淘汰策略才会生效) maxmemory 1gb # 比如限制 Redis 最多用 1G 内存 # 然后设置淘汰策略 maxmemory-policy allkeys-lfu
以上内容只做记录,如有错误还请各位鱼友版帮忙指出。
评论
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
