早上Redis 监控告警,内存不够用快达到峰值,原因是这几天快到月底了,业务并发起来了。
查询和配置当前redis内存:
info memory //查看当前内存信息
used_memory //代表当前已使用
maxmemory //代表总共可用内存大小
>config get maxmemory //查看当前配置的内存大小
>config set maxmemory=20g //配置内存
查询和配置内存回收策略:
> config get maxmemory-policy //查看内存回收策略,默认为noeviction
1) "maxmemory-policy"
2) "noeviction"
说明:
volatile-lru:采用最近使用最少的淘汰策略,Redis 将回收那些超时的(仅仅是超时的)键值对,也就是它只淘汰那些超时的键值对。
allkeys-lru:采用淘汰最少使用的策略,Redis 将对所有的(不仅仅是超时的)键值对采用最近使用最少的淘汰策略。
volatile-random:采用随机淘汰策略删除超时的(仅仅是超时的)键值对。
allkeys-random:采用随机淘汰策略删除所有的(不仅仅是超时的)键值对,这个策略不常用。
volatile-ttl:采用删除存活时间最短的键值对策略。
noeviction:根本就不淘汰任何键值对,当内存已满时,如果做读操作,例如 get 命令,它将正常工作,而做写操作,它将返回错误。也就是说,当 Redis 采用这个策略内存达到最大的时候,它就只能读而不能写了。