这个问题可以从内存淘汰策略,Redis内存大小,设置key过期时间出发
为每一个key设置过期时间,设置redis占用内存大小(一般为百分之50%),一旦达到maxmemory阀值,触发Redis内存淘汰策略
1、Redis内存淘汰策略
默认8种:
(1)volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。
(2)volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰。
(3)volatile-random:从已设置过期时间的数据集中任意选择数据淘汰。
(4)volatile-lfu:从已设置过期时间的数据集挑选使用频率最低的数据淘汰。
(5)allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
(6)allkeys-lfu:从数据集中挑选使用频率最低的数据淘汰。
(7)allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
(8) no-enviction(驱逐):禁止驱逐数据,这也是默认策略。意思是当内存不足以容纳新入数据时,新写入操作就会报错。
建议使用allkeys-lru 淘汰策略
2、redis内存大小
默认没有配置