Redis使用一种基于过期策略来处理键的过期和自动失效。这种策略可以确保不再需要的数据被自动删除,以释放内存并避免数据过期后仍然在缓存中存留。
Redis的过期删除策略主要有两种:
Redis支持多种数据淘汰策略,用于管理内存中的数据,以便在内存不足时删除部分数据。
LRU(Least Recently Used,最近最少使用):当内存不足时,Redis会优先删除最久未被访问的键。
LFU(Least Frequently Used,最不经常使用):Redis会在内存不足时删除访问频率最低的键。
TTL(Time To Live,生存时间):当键的生存时间过期时,Redis会自动删除该键。
以下是Redis中常见的8种数据淘汰策略:
# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory # is reached. You can select one from the following behaviors: # # volatile-lru -> Evict using approximated LRU, only keys with an expire set. # allkeys-lru -> Evict any key using approximated LRU. # volatile-lfu -> Evict using approximated LFU, only keys with an expire set. # allkeys-lfu -> Evict any key using approximated LFU. # volatile-random -> Remove a random key having an expire set. # allkeys-random -> Remove a random key, any key. # volatile-ttl -> Remove the key with the nearest expire time (minor TTL) # noeviction -> Don't evict anything, just return an error on write operations.
noeviction:不淘汰任何key,当内存满时不允许写入新数据。这是默认策略。(内存不足会报错的)
volatile-ttl:对设置了TTL的key,计算剩余TTL值,越小的先被淘汰。
volatile-lru:对设置了TTL的key,基于LRU算法进行淘汰。
allkeys-lru:对所有的key,基于LRU算法进行淘汰。
volatile-lfu:对设置了TTL的key,基于LFU算法进行淘汰。
allkeys-lfu:对所有的key,基于LFU算法进行淘汰。
volatile-random:对设置了TTL的key,随机淘汰。
allkeys-random:对所有的key,随机淘汰。
使用建议:
业务对缓存的数据有冷热数据区分的时候,建议使用allkeys-lru删除最久未被访问的key的策略。
业务没有冷热数据区分,使用allkeys-random就行。
业务中有置顶要求,可以设置volatile-lru,对置顶数据不设过期时间,这些数据就会一直保留。
业务中有频率要求,可以使用volatile-lfu或者allkeys-lfu策略。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务