概念

          LRU(Least Recently Used)最近最少使用算法是眾多置換算法中的一種。

          maxmemory

          Redis中有一個(gè)maxmemory概念,主要是為了將使用的內(nèi)存限定在一個(gè)固定的大小。Redis用到的LRU 算法,是一種近似的LRU算法。

          設(shè)置maxmemory
          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設(shè)置為0表示不限制Redis內(nèi)存使用,在32bit系統(tǒng)下,maxmemory隱式不能超過3GB。
          當(dāng)Redis內(nèi)存使用達(dá)到指定的限制時(shí),就需要選擇一個(gè)置換的策略。

          置換策略

          當(dāng)Redis內(nèi)存使用達(dá)到maxmemory時(shí),需要選擇設(shè)置好的maxmemory-policy進(jìn)行對老數(shù)據(jù)的置換。
          下面是可以選擇的置換策略:

          * noeviction: 不進(jìn)行置換,表示即使內(nèi)存達(dá)到上限也不進(jìn)行置換,所有能引起內(nèi)存增加的命令都會返回error
          * allkeys-lru: 優(yōu)先刪除掉最近最不經(jīng)常使用的key,用以保存新數(shù)據(jù)
          * volatile-lru: 只從設(shè)置失效(expire set)的key中選擇最近最不經(jīng)常使用的key進(jìn)行刪除,用以保存新數(shù)據(jù)
          * allkeys-random: 隨機(jī)從all-keys中選擇一些key進(jìn)行刪除,用以保存新數(shù)據(jù)
          * volatile-random: 只從設(shè)置失效(expire set)的key中,選擇一些key進(jìn)行刪除,用以保存新數(shù)據(jù)
          * volatile-ttl: 只從設(shè)置失效(expire set)的key中,選出存活時(shí)間(TTL)最短的key進(jìn)行刪除,用以保存新數(shù)據(jù)

          volatile-lru和volatile-random經(jīng)常在一個(gè)Redis實(shí)例既做cache又做持久化的情況下用到,然而,更好的選擇使用兩個(gè)Redis實(shí)例來解決這個(gè)問題。設(shè)置是失效時(shí)間expire會占用一些內(nèi)存,而采用allkeys-lru就沒有必要設(shè)置失效時(shí)間,進(jìn)而更有效的利用內(nèi)存。

          3 置換策略是如何工作的

          理解置換策略的執(zhí)行方式是非常重要的,比如:

          * 客戶端執(zhí)行一條新命令,導(dǎo)致數(shù)據(jù)庫需要增加數(shù)據(jù)(比如set key value)
          * Redis會檢查內(nèi)存使用,如果內(nèi)存使用超過maxmemory,就會按照置換策略刪除一些key
          * 新的命令執(zhí)行成功
          我們持續(xù)的寫數(shù)據(jù)會導(dǎo)致內(nèi)存達(dá)到或超出上限maxmemory,但是置換策略會將內(nèi)存使用降低到上限以下。

          如果一次需要使用很多的內(nèi)存(比如一次寫入一個(gè)很大的set),那么,Redis的內(nèi)存使用可能超出最大內(nèi)存限制一段時(shí)間。

          設(shè)置轉(zhuǎn)換策略
          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"

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點(diǎn)信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                美女毛片免费看 | 看操美女逼网视频 | 亚洲自拍偷拍无码视频 | 干女人视频 | 中文字幕在线和永久在线的区别 |