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

淺談Redis中的內存淘汰策略和過期鍵刪除策略

 更新時間:2021年09月15日 11:29:53   作者:紀先生  
本文主要介紹了淺談Redis中的內存淘汰策略和過期鍵刪除策略,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

redis是我們現(xiàn)在最常用的一個工具,幫助我們建設系統(tǒng)的高可用,高性能。

而且我們都知道redis是一個完全基于內存的工具,這也是redis速度快的一個原因,當我們往redis中不斷緩存數(shù)據的時候,其內存總有滿的時候(而且內存是很貴的東西,盡量省著點用),所以盡可能把有用的數(shù)據,或者使用頻繁的數(shù)據緩存在redis中,物盡其用。

那么如果正在使用的redis內存用完了,我們應該怎么取舍redis中已存在的數(shù)據和即將要存入的數(shù)據呢,我們要怎么處理呢?

redis官方提供了8種不同的淘汰策略

redis.conf 是個好東西,幾乎redis的所有配置都可以在這里找到,根據conf中的說明也就能操作了

我們看下redis.conf中關于8中淘汰策略的說明(本文使用redis版本是4.0.9)

volatile-lru -> Evict using approximated LRU among the keys with an expire set.
allkeys-lru -> Evict any key using approximated LRU.
volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
allkeys-lfu -> Evict any key using approximated LFU.
volatile-random -> Remove a random key among the ones with an expire set.
allkeys-random -> Remove a random key, any key.
volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
noeviction -> Don't evict anything, just return an error on write operations.

# LRU means Least Recently Used(最近最少使用的,時間)
# LFU means Least Frequently Used(最不經常使用的,次數(shù))
# The default is:
maxmemory-policy noeviction

上文是從redis.conf中摘出來關于淘汰策略的8種配置以及設置說明,其中maxmemory-policy noeviction 代表了淘汰策略默認的是noeviction,我們可以根據自己的業(yè)務需求修改合適的策略。
英文看不懂的看下面的中文

8種淘汰策略

  • volatile-lru:在設置過期時間的數(shù)據中淘汰最少使用的數(shù)據。
  • allkeys-lru:在所有的數(shù)據中淘汰最少使用的數(shù)據。
  • volatile-lfu:在設置過期時間的數(shù)據中淘汰使用頻率最低的數(shù)據。
  • allkeys-lfu:在所有的數(shù)據中淘汰使用使用頻率最低的數(shù)據。
  • volatile-random:在設置過期時間的數(shù)據中淘汰任意隨機數(shù)據。
  • allkeys-random:在所有的數(shù)據中隨機淘汰數(shù)據。
  • volatile-ttl:在設置過期時間的數(shù)據中淘汰最早過期的數(shù)據。
  • noeviction:默認策略,不淘汰數(shù)據,新增或者修改數(shù)據會拋異常,但是讀操作正常進行,不受影響

上面是內存不足的淘汰策略,還有一種是過期鍵的刪除策略,兩者是不同,不要搞混了

過期鍵的刪除策略

  • 定時過期:每個設置過期時間的key都需要創(chuàng)建一個定時器,到過期時間就會立即清除。該策略可以立即清除過期的數(shù)據,對內存很友好;但是會占用大量的CPU資源去處理過期的數(shù)據,從而影響緩存的響應時間和吞吐量。
  • 惰性過期:只有當訪問一個key時,才會判斷該key是否已過期,過期則清除。該策略可以最大化地節(jié)省CPU資源,卻對內存非常不友好。極端情況可能出現(xiàn)大量的過期key沒有再次被訪問,從而不會被清除,占用大量內存。
  • 定期過期:每隔一定的時間,會掃描一定數(shù)量的數(shù)據庫的expires字典中一定數(shù)量的key,并清除其中已過期的key。該策略是前兩者的一個折中方案。通過調整定時掃描的時間間隔和每次掃描的限定耗時,可以在不同情況下使得CPU和內存資源達到最優(yōu)的平衡效果。

expires字典會保存所有設置了過期時間的key的過期時間數(shù)據,其中,
key是指向鍵空間中的某個鍵的指針,
value是該鍵的毫秒精度的UNIX時間戳表示的過期時間。
鍵空間是指該Redis集群中保存的所有鍵。

總結

Redis的內存淘汰策略的選取并不會影響過期的key的處理。內存淘汰策略用于處理內存不足時的需要申請額外空間的數(shù)據;過期策略用于處理過期的緩存數(shù)據。

到此這篇關于淺談Redis中的內存淘汰策略和過期鍵刪除策略的文章就介紹到這了,更多相關Redis內存淘汰和過期鍵刪除內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 用Lua腳本實現(xiàn)Redis原子操作的示例

    用Lua腳本實現(xiàn)Redis原子操作的示例

    本文主要介紹了用Lua腳本實現(xiàn)Redis原子操作的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-03-03
  • redis+lua實現(xiàn)分布式限流的示例

    redis+lua實現(xiàn)分布式限流的示例

    本文主要介紹了redis+lua實現(xiàn)分布式限流的示例,可以實現(xiàn)復雜的限流邏輯,如滑動窗口限流,并且避免了多步操作導致的并發(fā)問題,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • redis事務執(zhí)行常用命令及watch監(jiān)視詳解

    redis事務執(zhí)行常用命令及watch監(jiān)視詳解

    這篇文章主要為大家介紹了redis事務執(zhí)行常用命令及watch監(jiān)視詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Redis實現(xiàn)全局唯一id的使用示例

    Redis實現(xiàn)全局唯一id的使用示例

    全局ID生成器,是一種在分布式系統(tǒng)下用來生成全局唯一ID的工具,本文主要介紹了Redis實現(xiàn)全局唯一id的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Redis主從復制的實現(xiàn)示例

    Redis主從復制的實現(xiàn)示例

    Redis主從復制實現(xiàn)多機備份,本文就來介紹一下Redis主從復制的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-11-11
  • 使用注解實現(xiàn)Redis緩存功能

    使用注解實現(xiàn)Redis緩存功能

    這篇文章主要為大家詳細介紹了使用注解實現(xiàn)Redis緩存功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Redis 如何批量設置過期時間(PIPLINE的使用)

    Redis 如何批量設置過期時間(PIPLINE的使用)

    有時候我們并不希望redis的key一直存在。例如緩存,驗證碼等數(shù)據,我們希望它們能在一定時間內自動的被銷毀。本文就詳細的介紹一下Redis 如何批量設置過期時間,感興趣的可以了解一下
    2021-11-11
  • redis中redisson實現(xiàn)鎖自動延時

    redis中redisson實現(xiàn)鎖自動延時

    redisson作為分布式鎖能夠解決分布式的加鎖解鎖問題,還能夠實現(xiàn)鎖的設置存活時間以及自動續(xù)期,本文主要介紹了redis中redisson實現(xiàn)鎖自動延時,感興趣的可以了解一下
    2024-02-02
  • 基于Redis過期事件實現(xiàn)訂單超時取消

    基于Redis過期事件實現(xiàn)訂單超時取消

    這篇文章主要介紹了基于Redis過期事件實現(xiàn)訂單超時取消,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • RedisTemplate 實現(xiàn)基于Value 操作的簡易鎖機制(示例代碼)

    RedisTemplate 實現(xiàn)基于Value 操作的簡易鎖機制(示例代碼)

    本文將介紹如何使用 RedisTemplate 的 opsForValue().setIfAbsent() 方法來實現(xiàn)一種簡單的鎖機制,并提供一個示例代碼,展示如何在 Java 應用中利用這一機制來保護共享資源的訪問,感興趣的朋友跟隨小編一起看看吧
    2024-05-05

最新評論

汶川县| 抚顺市| 古蔺县| 温州市| 竹北市| 大同县| 东至县| 方正县| 策勒县| 镇坪县| 白河县| 寿宁县| 海淀区| 绥德县| 鱼台县| 阿鲁科尔沁旗| 仙游县| 聂拉木县| 松潘县| 富锦市| 江孜县| 开封市| 富蕴县| 新津县| 繁峙县| 固原市| 武川县| 平武县| 新绛县| 灵台县| 庆元县| 剑河县| 集安市| 中山市| 渭南市| 银川市| 东阿县| 民县| 平乐县| 三河市| 望都县|