如何保證redis中存放的都是熱點數據


當redis使用的內存超過了設置的最大內存時,會觸發redis的key淘汰機制,在redis 3.0中有6種淘汰策略:

  • noeviction: 不刪除策略。當達到最大內存限制時, 如果需要使用更多內存,則直接返回錯誤信息。(redis默認淘汰策略)
  • allkeys-lru: 在所有key中優先刪除最近最少使用(less recently used ,LRU) 的 key。
  • allkeys-random: 在所有key中隨機刪除一部分 key。
  • volatile-lru: 在設置了超時時間(expire )的key中優先刪除最近最少使用(less recently used ,LRU) 的 key。
  • volatile-random: 在設置了超時時間(expire)的key中隨機刪除一部分 key。
  • volatile-ttl: 在設置了超時時間(expire )的key中優先刪除剩余時間(time to live,TTL) 短的key。

場景:

數據庫中有1000w的數據,而redis中只有50w數據,如何保證redis中10w數據都是熱點數據?

方案:

 限定 Redis 占用的內存,Redis 會根據自身數據淘汰策略,留下熱數據到內存。所以,計算一下 50W 數據大約占用的內存,然后設置一下 Redis 內存限制即可,並將淘汰策略為volatile-lru或者allkeys-lru。  

設置Redis最大占用內存:

打開redis配置文件,設置maxmemory參數,maxmemory是bytes字節類型

  1. # In short... if you have slaves attached it is suggested that you set a lower
  2. # limit for maxmemory so that there is some free RAM on the system for slave
  3. # output buffers (but this is not needed if the policy is 'noeviction').
  4. #
  5. # maxmemory <bytes>
  6. maxmemory 268435456

設置過期策略:

maxmemory-policy volatile-lru


免責聲明!

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



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