最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何高效使用Redis作為LRU緩存

 更新時間:2020年08月29日 08:45:37   作者:程序零世界  
這篇文章主要介紹了如何高效使用Redis作為LRU緩存,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

當用Redis作為一個LRU存儲時,有些時候是比較方便的,在你增添新的數(shù)據(jù)時會自動驅(qū)逐舊的數(shù)據(jù)。這種行為在開發(fā)者論壇是非常有名的,因為這是流行的memcached系統(tǒng)的默認行為。

LRU實際上只是支持驅(qū)逐的方式之一。這頁包含更多一般的Redis maxmemory指令的話題用于限制內(nèi)存使用到一個定額,同時它也深入的涵蓋了Redis所使用的LRU算法,實際上是精確LRU的近似值。

一、Maxmemory設置指令

Maxmemory設置指令用于配置Redis的數(shù)據(jù)集使用指定量的內(nèi)存。可以用redis conf.file設置指令,或者可以在稍晚的時候在運行時間用config set命令。

例如,為了設置內(nèi)存局限于100百萬字節(jié),下列指令可在redis.conf file內(nèi)使用。設置maxmemory到零使得沒有內(nèi)存限制。這是64位系統(tǒng)的默認行為,而32位系統(tǒng)使用3GB內(nèi)隱記憶極限。

maxmemory 100mb

當達到指定量的內(nèi)存后,就可以選擇不同的行為,稱為策略。Redis可以返回錯誤的指令,導致使用更多的內(nèi)存,或者為了每次增加新的數(shù)據(jù)后返回指定的內(nèi)存,它可以驅(qū)逐一些舊的數(shù)據(jù)。

二、驅(qū)逐策略

當?shù)竭_maxmemory極限時,使用maxmemory-策略配置指令來執(zhí)行具體的Redis動作。

以下策略可以使用:

1、noeviction:達到內(nèi)存限額后返回錯誤,客戶嘗試可以導致更多內(nèi)存使用的命令(大部分寫命令,但DEL和一些例外)

2、allkeys-lru:為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐鍵先試圖移除一部分最近使用較少的(LRC)。

3、volatile-lru:為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐鍵先試圖移除一部分最近使用較少的(LRC),但只限于過期設置鍵。

4、allkeys-random: 為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐任意鍵。

5、volatile-random: 為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐任意鍵,但只限于有過期設置的驅(qū)逐鍵。

6、volatile-ttl: 為了給新增加的數(shù)據(jù)騰出空間,驅(qū)逐鍵只有秘鑰過期設置,并且首先嘗試縮短存活時間的驅(qū)逐鍵。

如果沒有秘鑰去驅(qū)逐匹配先決條件,策略volatile-lru, volatile-random 和volatile-ttl行為很像noeviction。

那么根據(jù)你應用的訪問模式選擇正確的驅(qū)逐策略是很重要的。然而在應用運行時你可以在運行時間重新設置策略,并且監(jiān)控緩存缺失的數(shù)量并為了調(diào)整你的設置點擊Redis信息輸出。

三、近似LRU算法

Redis的LRU算法不是準確的實現(xiàn)。也就是說Redis沒有為逐出選擇 最好的候選人 ,也就是沒有選擇過去最后被訪問離現(xiàn)在最久的。反而 是去執(zhí)行一個 近似LRU的算法,通過抽樣少量的key,并且逐出抽樣中最后被訪問離現(xiàn)在最久的key(最老的訪問時間)。

在Redis 3.0(目前的測試版),算法被改進了,使用了一個逐出最佳候選池。改進了算法的性能,使它更加近似真正LRU算法。

算法中,關于逐出檢測的樣品數(shù)量,你可以自己去調(diào)整。配置參數(shù)是:

maxmemory-samples 5

Redis沒有使用真正實現(xiàn)LRU算是的原因是,因為消耗更多的內(nèi)存。然而對于使用Redis的應用來說,事實上是等價的。下面是Redis的LRU算法和真正LRU算法的比較:

給出配置數(shù)量的key生成上面的圖表。key從第一行到最后一行被訪問,那么第一個key是LRU算法中最好的逐出候選者。之后有50%的key被添加,那么一半的舊key被逐出。

在上圖中你可以看見3個明顯的區(qū)別:

1、淺灰色帶是被逐出的對象。

2、灰色帶是沒有被逐出的對象。

3、綠色帶是被添加的對象。

LRU理論實現(xiàn)是在所有的舊key中前一半被逐出。Redis使用的是近似過期的key被逐出。

如你所見,3.0的工作比2.8更好,然而在2.8版本中,大多數(shù)最新訪問對象的仍然保留。在3.0使用樣品為10 時,性能非常接近理論上的LRU算法。

注意:LRU僅僅是一個預測模式,給出的key很可能在未來被訪問。此外,如果你的數(shù)據(jù)訪問模式類似于冪律(線性的),大多數(shù)key都可能被訪問那么這個LRU算法的處理就是非常好的。

在實戰(zhàn)中 ,我們發(fā)現(xiàn)使用冪律(線性的)的訪問模式,在真正的LRU算法和Redis的LRU算法之間差異很小或者不存在差異。

你可以提升樣品大小配置到10,它將接近真正的LRU算法,并且有不同錯過率,但是要消耗更多的CPU。

在調(diào)試時使用不同的樣品大小去調(diào)試非常簡單,使用命令CONFIG SET maxmemory-samples 實現(xiàn)。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Redis事務涉及的watch、multi等命令詳解

    Redis事務涉及的watch、multi等命令詳解

    這篇文章主要介紹了Redis事務涉及的watch、multi等命令,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-10-10
  • 設置Redis最大占用內(nèi)存的實現(xiàn)

    設置Redis最大占用內(nèi)存的實現(xiàn)

    本文主要介紹了設置Redis最大占用內(nèi)存的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • 同一份數(shù)據(jù)Redis為什么要存兩次

    同一份數(shù)據(jù)Redis為什么要存兩次

    這篇文章主要介紹了同一份數(shù)據(jù)Redis為什么要存兩次,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • Redis緩存雪崩的物種解決方案

    Redis緩存雪崩的物種解決方案

    在高并發(fā)系統(tǒng)中,Redis作為核心緩存組件,通常扮演著重要的"守門員"角色,當大量緩存同時失效時,會導致請求如洪水般直接涌向數(shù)據(jù)庫,造成數(shù)據(jù)庫瞬間壓力劇增甚至宕機,這種現(xiàn)象被形象地稱為"緩存雪崩",本文給大家介紹了Redis緩存雪崩的5種應對措施,需要的朋友可以參考下
    2025-04-04
  • windows下通過批處理腳本啟動redis的操作

    windows下通過批處理腳本啟動redis的操作

    本文主要給大家介紹了windows下通過批處理腳本啟動redis的操作,windows下redis啟動,需要進入redis安裝目錄,然后shift+右鍵,選擇“在此處打開命令窗口”,然后輸入redis-server.exe redis.conf,就可以啟動redis了,文中有詳細的圖文參考,感興趣的朋友可以參考下
    2023-12-12
  • 為啥Redis使用pipelining會更快

    為啥Redis使用pipelining會更快

    這篇文章主要介紹了為啥Redis使用pipelining會更快,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • 詳解Redis如何優(yōu)雅地實現(xiàn)接口防刷

    詳解Redis如何優(yōu)雅地實現(xiàn)接口防刷

    這篇文章主要為大家詳細介紹了Redis優(yōu)雅地實現(xiàn)接口防刷的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-03-03
  • 使用redis如何生成自增序列號碼

    使用redis如何生成自增序列號碼

    這篇文章主要介紹了使用redis如何生成自增序列號碼,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • redis底層數(shù)據(jù)結(jié)構(gòu)之ziplist實現(xiàn)詳解

    redis底層數(shù)據(jù)結(jié)構(gòu)之ziplist實現(xiàn)詳解

    這篇文章主要為大家介紹了redis底層數(shù)據(jù)結(jié)構(gòu)之ziplist實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • 利用Redis實現(xiàn)SQL伸縮的方法

    利用Redis實現(xiàn)SQL伸縮的方法

    本文主要介紹了如何通過鎖和時間序列等方面來提升傳統(tǒng)數(shù)據(jù)庫的性能等方法,利用Redis實現(xiàn)SQL伸縮,供有需要的朋友們參考。
    2015-09-09

最新評論

金乡县| 阜平县| 盐池县| 平顶山市| 敦煌市| 新民市| 建德市| 沂水县| 楚雄市| 刚察县| 宿迁市| 斗六市| 崇明县| 黄陵县| 老河口市| 昌吉市| 彩票| 左云县| 永德县| 招远市| 绥中县| 都安| 拜泉县| 永福县| 云霄县| 青州市| 会同县| 成都市| 凤翔县| 延川县| 南岸区| 柳林县| 吐鲁番市| 阜南县| 锦州市| 信宜市| 靖远县| 西丰县| 莎车县| 洪湖市| 新津县|