2023-11-17 分類: 網(wǎng)站建設
LRU(Least Recently Used)最近最少使用算法是眾多置換算法中的一種。
Redis中有一個maxmemory概念,主要是為了將使用的內存限定在一個固定的大小。Redis用到的LRU 算法,是一種近似的LRU算法。
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "0"
127.0.0.1:6379> CONFIG SET maxmemory 100Mb
OK
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "104857600"
注意,在64bit系統(tǒng)下,maxmemory設置為0表示不限制Redis內存使用,在32bit系統(tǒng)下,maxmemory隱式不能超過3Gb。當Redis內存使用達到指定的限制時,就需要選擇一個置換的策略。
當Redis內存使用達到maxmemory時,需要選擇設置好的maxmemory-policy進行對老數(shù)據(jù)的置換。
下面是可以選擇的置換策略:
noeviction: 不進行置換,表示即使內存達到上限也不進行置換,所有能引起內存增加的命令都會返回error
allkeys-lru: 優(yōu)先刪除掉最近最不經(jīng)常使用的key,用以保存新數(shù)據(jù)
volatile-lru: 只從設置失效(expire set)的key中選擇最近最不經(jīng)常使用的key進行刪除,用以保存新數(shù)據(jù)
allkeys-random: 隨機從all-keys中選擇一些key進行刪除,用以保存新數(shù)據(jù)
volatile-random: 只從設置失效(expire set)的key中,選擇一些key進行刪除,用以保存新數(shù)據(jù)
volatile-ttl: 只從設置失效(expire set)的key中,選出存活時間(TTL)最短的key進行刪除,用以保存新數(shù)據(jù)
volatile-lru和volatile-random經(jīng)常在一個Redis實例既做cache又做持久化的情況下用到,然而,更好的選擇使用兩個Redis實例來解決這個問題。設置是失效時間expire會占用一些內存,而采用allkeys-lru就沒有必要設置失效時間,進而更有效的利用內存。
理解置換策略的執(zhí)行方式是非常重要的,比如:
客戶端執(zhí)行一條新命令,導致數(shù)據(jù)庫需要增加數(shù)據(jù)(比如set key value)
Redis會檢查內存使用,如果內存使用超過maxmemory,就會按照置換策略刪除一些key
新的命令執(zhí)行成功
我們持續(xù)的寫數(shù)據(jù)會導致內存達到或超出上限maxmemory,但是置換策略會將內存使用降低到上限以下。
如果一次需要使用很多的內存(比如一次寫入一個很大的set),那么,Redis的內存使用可能超出大內存限制一段時間。
設置轉換策略
127.0.0.1:6379> CONFIG GET maxmemory-policy
1) "maxmemory"
2) "0"
127.0.0.1:6379> CONFIG SET maxmemory-policy allkeys-lru
OK
127.0.0.1:6379> CONFIG GET maxmemory-policy
1) "maxmemory-policy"2) "allkeys-lru"
分享文章:創(chuàng)新互聯(lián)教你設置Redis的LRU策略
URL分享:http://aaarwkj.com/news44/294894.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設、響應式網(wǎng)站、品牌網(wǎng)站建設、網(wǎng)站改版、建站公司、網(wǎng)頁設計公司
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容