Redis5 0之後的記憶體策略 最新八種演算法

2021-10-04 04:05:55 字數 1186 閱讀 9861

前言:這八種演算法是基於redis5.0版之後的,他新增了新增allkeys-lfu,volatile-lfu這兩種演算法,也就是多了lfu演算法,而lfu與lru演算法不同在於;lru是淘汰最近最長時間未使用的頁面進行淘汰,而lfu是要求在頁置換時置換引用計數最小的頁,因為經常使用的頁應該有乙個較大的引用次數。但是有些頁在開始時使用次數很多,但以後就不再使用,這類頁將會長時間留在記憶體中,因此可以將引用計數暫存器定時右移一位,形成指數衰減的平均使用次數。

redis將資料都儲存到記憶體中,如果一直往記憶體中儲存資料,而不維護.將來可能導致記憶體資料存不下.記憶體溢位.

1.2.1lru演算法

lru是least recently used的縮寫,即最近最少使用,是一種常用的頁面置換演算法,選擇最近最久未使用的頁面予以淘汰。該演算法賦予每個頁面乙個訪問字段,用來記錄乙個頁面自上次被訪問以來所經歷的時間 t,當須淘汰乙個頁面時,選擇現有頁面中其 t 值最大的,即最近最少使用的頁面予以淘汰。

以時間t為維度,刪除不使用的資料,實現記憶體的清空。

1.2.2lfu演算法

lfu(least frequently used (lfu) page-replacement algorithm)。即最不經常使用頁置換演算法,要求在頁置換時置換引用計數最小的頁,因為經常使用的頁應該有乙個較大的引用次數。但是有些頁在開始時使用次數很多,但以後就不再使用,這類頁將會長時間留在記憶體中,因此可以將引用計數暫存器定時右移一位,形成指數衰減的平均使用次數。

1.2.3具體八種演算法

1.2.4修改redis記憶體策略

設定redis中的記憶體優化策略.

597 maxmemory-policy volatile

-lru

608 maxmemory-samples 5 lru演算法取值個數

問題:如果redis中有100萬的資料,都要採用lru演算法進行優化,則計算100萬資料的時間效能太低了.

優化:隨機篩選5個資料. 在5個資料中執行lru演算法.優化1個資料.

一般預設值為5,表示效能最優.篩選的個數可以調整 最大不要超過10.

據官方的統計,如果篩選的個數為10 ,則接近真實的lru演算法.但是會增加記憶體的開銷.

Redis5 0資料淘汰策略

redis5.0為我們提供了八個不同的記憶體置換策略。很早之前提供了6種。1 volatile lru 從已設定過期時間的資料集中挑選最近最少使用的資料淘汰。2 volatile ttl 從已設定過期時間的資料集中挑選將要過期的資料淘汰。3 volatile random 從已設定過期時間的資料集中...

redis5 0的12項新特性

目錄 1 新的stream資料型別 2 新的redis模組的api times and cluster api 3 rdb現在儲存的lfu和lru資訊 4 集群管理器從ruby移植到c 5 新的sorted set 命令 zpop min max 和阻塞變種 6 主動碎片整理v2 debug pop...

Linux下redis5 0的安裝和部署

linux下redis的安裝 開放埠號 redis官網 使用linux命令對解壓後的資料夾進行重新命名 mv 源資料夾名稱 修改後的資料夾名稱 mv redis 5.0.10 redis安裝gcc環境 redis是由c語言編寫的,它的執行需要c環境,所以編譯前需安裝 gcc yum install ...