Redis的垃圾回收機制


Redis的垃圾回收機制(重點)

Redis自己也設計了一套垃圾回收方案。可以讓redis中的存儲空間得到優化。

1.什么情況下數據會成為垃圾

當redis中的key的生命時間到了,不會立即刪除,當碰到者兩種情況會被刪除

  • 定期刪除:每隔100ms看3個key,如果被redis掃描到,那么就被刪除
  • 惰性刪除:當key過期了,客戶端get了一次,redis發現該key已過期,於是刪除。

2.redis采用什么樣的回收策略

  • volatile-lru:在內存不足時,Redis會再設置過了生存時間的key中干掉一個最近最少使用的key。
  • allkeys-lru:在內存不足時,Redis會在全部的key中干掉一個最近最少使用的key。
  • volatile-lfu:在內存不足時,Redis會再設置過了生存時間的key中干掉一個最近最少頻次使用的key。
  • allkeys-lfu:在內存不足時,Redis會再全部的key中干掉一個最近最少頻次使用的key。
  • volatile-random:在內存不足時,Redis會再設置過了生存時間的key中隨機干掉一個。
  • allkeys-random:在內存不足時,Redis會再全部的key中隨機干掉一個。
  • volatile-ttl:在內存不足時,Redis會再設置過了生存時間的key中干掉一個剩余生存時間最少的key。
  • noeviction:(默認)在內存不足時,只讀不能寫。

建議使用:volatile-lru。這種是性能和安全之間最協調的。

3.redis具體怎么回收垃圾

redis會根據選擇的回收策略對待回收的key集合進行取樣,樣本的范圍大小決定了性能,

  • 范圍越大:越精確,性能越差;
  • 范圍越小:越不精確,性能越好。
maxmemory-samples 5 # 保持默認即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM