Redis記憶體優化

2021-10-09 11:01:25 字數 1016 閱讀 2202

redis可以當做記憶體使用,但是如果一直往裡儲存不刪除資料,則必然導致記憶體溢位.

想法:如何可以實現記憶體資料的維護呢? 可以讓使用者永遠都可以存資料.

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

維度:時間t

lru演算法是當下實現記憶體清理的最優演算法.

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

維度: 引用次數

說明:監控剩餘的存活時間,將存活時間少的資料提前刪除.

1.

volatile

-lru 在設定了超時時間的資料中,採用lru演算法.

2.allkeys-lru 所有資料採用lru演算法

3.volatile

-lfu 在超時的資料中採用lfu演算法

4.allkeys-lfu -

> 所有資料採用lfu演算法

5.volatile

-random -

> 設定超時時間的資料採用隨機演算法

6.allkeys-random -

> 所有資料隨機刪除

7.volatile

-ttl -

> 刪除存活時間少的資料

8.noeviction -

> 不會刪除資料,如果記憶體溢位報錯返回.

Redis 記憶體優化

非常感謝 redis內部有很多的資料型別,這些在官方文件上都可以看到,下面是其內部優化的一些細節點 1.string 和 數字,在redis中如果儲存的是 123 redis是能夠識別出來這是乙個數字並且按照數字來儲存,節省儲存空間,當然除了這個優化之外,redis內部會構建乙個數字池,預設是100...

redis記憶體優化

在資料量小或者只有int資料的時候,redis採用更緊湊的資料結構來儲存資料 zset hash ziplist set int intset 這些特殊的資料結構是一整塊記憶體,避免來記憶體分片,節省了記憶體,並且增加了cache命中,所以雖然演算法複雜度變成了on,但其實更快了 對於只需要flag...

Redis筆記 記憶體優化

redis2.2版本及以後,儲存集合資料的時候會採用記憶體壓縮技術,以使用更少的記憶體儲存更多的資料。如hashes,lists,sets和sorted sets,當這些集合中的所有數都小於乙個給定的元素,並且集合中元素數量小於某個值時,儲存的資料會被以一種非常節省記憶體的方式進行編碼,使用這種編碼...