首頁 >資料庫 >Redis >如何保證redis中都是熱點數據

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

(*-*)浩
(*-*)浩原創
2019-11-28 09:45:373574瀏覽

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

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

noeviction: 不刪除策略。當達到最大記憶體限制時, 如果需要使用更多記憶體,則直接傳回錯誤訊息。 (redis預設淘汰策略)

allkeys-lru: 在所有key中優先刪除最近最少使用(less recently used ,LRU) 的 key。 (建議學習:Redis影片教學

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位元組類型

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

#設定過期策略:

maxmemory-policy volatile-lru

更多Redis相關技術文章,請造訪Redis入門教學欄位學習!

以上是如何保證redis中都是熱點數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn