redis缓存过期key优化-缓存不释放
redis缓存过期key优化
背景
redis集群大量key写入和大量key过期,运行一段时间,内存告急,并发出告警。
原因
- 为啥设置了expire过期key,内存没有释放
- key设置过期时间了,ttl为0后并不会自行删除该key,而是等到下次访问该key发现已过期,才会删除。
- 命令keys "*" 会瞬间释放所有过期key,但是有风险。慎行。
- 其实缓存是在释放的,只不过是没有那么快,释放的快慢取决于redis.conf中的hz参数默认为5,意思是每秒执行5次删除过期key。所以在redis过期较多的场景可以适当调大。并观察cpu是否升高。
解决方法
- 过期key删除频率 观察cpu 内存
- config set hz 20