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