1. 查詢redis最大占用記憶體
# 查詢最大占用記憶體
config get maxmemory
# 為0時在64作業系統中不限制記憶體,在32位作業系統中最大為3gb
2. redis設定最大占用記憶體# 設定最大占用記憶體大小為100mb
maxmemory 100mb
# 設定最大占用記憶體大小為100mb
config set maxmemory 100mb
3. redis記憶體淘汰策略
4. 查詢redis記憶體淘汰策略
# 查詢記憶體淘汰策略
config get maxmemory-policy
5. redis設定記憶體淘汰策略# 設定記憶體淘汰策略為:allkeys-lru
maxmemory-policy allkeys-lru
# 設定記憶體淘汰策略為:allkeys-lru
config set maxmemory-policy allkeys-lru
6. lru演算法
lru(least recently used),即最近最少使用,是一種快取置換演算法。
在使用記憶體作為快取的時候,快取的大小一般是固定的。當快取被佔滿,這個時候繼續新增資料,就需要淘汰一部分資料,釋放記憶體空間儲存新的資料。此時就可以使用lru演算法了,其核心思想是:如果乙個資料在最近一段時間沒有被用到,那麼將來被使用到的可能性也很小,所以就可以被淘汰。
7. lru演算法在redis中的實現
redis使用的是近似lru演算法。近似lru演算法通過隨機取樣法淘汰資料,每次隨機出5(預設)個key,從裡面淘汰掉最近最少使用的key。
可以通過maxmemory-samples引數修改取樣數量:修改配置檔案中maxmemory-samples 10或通過命令config set maxmemory-samples 10。maxmenory-samples配置的數值越大,淘汰的結果越接近於嚴格的lru演算法。
redis為了實現近似lru演算法,給每個key額外增加了24位元組,用來儲存該key最後一次被訪問的時間。
8. redis3.0對近似lru的優化
redis3.0對近似lru演算法進行了一些優化。新演算法會維護乙個候選池(大小為16),池中的資料根據訪問時間進行排序,第一次隨機選取的key都會放入池中,隨後每次隨機選取的key只有在訪問時間小於池中最小的時間才會放入池中,直到候選池被放滿。當放滿後,如果有新的key需要放入,則將池中最後訪問時間最大(最近被訪問)的移除。
當需要淘汰的時候,則直接從池中選取最近訪問時間最小(最久未被訪問)的key淘汰。
9. redis4.0新增lfu演算法
lfu(least frequently used),它的核心思想是:根據key的最近訪問頻率進行淘汰,很少被訪問的優先被淘汰,訪問多的則被留下來。
lfu演算法能更好的表示乙個key被訪問的熱度。假如使用的是lru演算法,乙個key很久沒有被訪問,但是剛剛偶爾被訪問了一次,那麼它就被認為是熱點資料,不會被淘汰,而有些key將來很有可能被訪問到但被淘汰了。如果使用lfu演算法則不會出現這種情況,因為使用一次並不會使乙個key成為熱點資料。
10. lfu演算法策略
Redis占用記憶體大小
redis占用記憶體大小 我們知道redis是基於記憶體的key value資料庫,因為系統的記憶體大小有限,所以我們在使用redis的時候可以配置redis能使用的最大的記憶體大小。1 通過配置檔案配置 通過在redis安裝目錄下面的redis.conf配置檔案中新增以下配置設定記憶體大小。設定r...
Redis記憶體占用過大如何分析?
前幾天突然收到redis記憶體超標的報警,趕緊看了下監控,看到這個曲線吸了一口涼氣,這增長速度也太快了,需要快速定位出問題,不然就要爆了。這個redis由多個應用共享,我們就有2個問題需要解決 首先要找出是哪個應用在占用redis記憶體 其次是到底是某個key值太大,還是數量太多引起的?為解答這2個...
Redis之記憶體占用分析工具RDR
場景 最近redis爆滿,但是不清楚具體哪些鍵占用的空間較多,是否有設定過期時間等情況 windows releases download v0.0.1 rdr windows.exe 新增執行許可權 chmod a x rdr 2.用法 rdr show p 8000 rdb p 指定開啟的web...