答:不会被立马删除。Redis有两种删除过期数据的策略
惰性删除:
定期删除:
问:如果过期的数据太多,定期删除无法删除完全(每次删除完过期的key还是超过25%,同时这些key也再也不会被客户端请求,也就是无法走惰性删除,会怎么样?会不会导致Redis内存耗尽,怎么破?
答:走Redis内存淘汰机制。
Redis *** 作是基于内存的,大小有限。当内存不足或占用过高时,需要自动放弃一些未到期的数据Redis 默认 的生效的配置为 noeviction ,需要根据不同的业务选择不同的淘汰策略
volatile-lru:在设置过期时间的数据集合里淘汰最近访问最少的数据
allkeys-lru:所有数据集合中淘汰最近访问最少的数据
volatile-lfu:在设置过期时间的数据集合里淘汰访问频率最低的数据
allkeys-lfu:所有数据集合中淘汰访问频率最低的数据
volatile-random:在设置过期时间的数据集合里,随机淘汰
allkeys-random:在所有的数据集合随机淘汰
volatile-ttl:在设置过期时间的数据集合里,淘汰剩余存活时间 (TTL) 最少的数据
noevictionl:当内存不足以写入新数据时,拒绝新数据写入。Redis 默认策略
我这里越久的数据价值越低,不在乎调用次数。所以选择
volatile-ttl
找到配置 maxmemory-policy 默认被注释 生效策略 noevictionl
保存
重启redis 生效
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)