亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談Redis中的內(nèi)存淘汰策略和過期鍵刪除策略

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

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

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

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

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

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

我們看下redis.conf中關(guān)于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(最近最少使用的,時(shí)間)
# LFU means Least Frequently Used(最不經(jīng)常使用的,次數(shù))
# The default is:
maxmemory-policy noeviction

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

8種淘汰策略

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

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

過期鍵的刪除策略

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

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

總結(jié)

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

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

相關(guān)文章

  • redis啟動,停止,及端口占用處理方法

    redis啟動,停止,及端口占用處理方法

    今天小編就為大家分享一篇redis啟動,停止,及端口占用處理方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Redis Cluster集群主從切換的踩坑與填坑

    Redis Cluster集群主從切換的踩坑與填坑

    這篇文章主要介紹了Redis Cluster集群主從切換的踩坑與填坑,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Redis連接池監(jiān)控(連接池是否已滿)與優(yōu)化方法

    Redis連接池監(jiān)控(連接池是否已滿)與優(yōu)化方法

    本文詳細(xì)講解了如何在Linux系統(tǒng)中監(jiān)控Redis連接池的使用情況,以及如何通過連接池參數(shù)配置、系統(tǒng)資源使用情況、Redis命令監(jiān)控、外部監(jiān)控工具等多種方法進(jìn)行檢測和優(yōu)化,以確保系統(tǒng)在高并發(fā)場景下的性能和穩(wěn)定性,討論了連接池的概念、工作原理、參數(shù)配置,以及優(yōu)化策略等內(nèi)容
    2024-09-09
  • Redis哈希Hash鍵值對集合操作(查詢增加修改)

    Redis哈希Hash鍵值對集合操作(查詢增加修改)

    Redis中的Hash數(shù)據(jù)?是一個(gè)?鍵值對集合,本文主要介紹了Redis哈希Hash鍵值對集合操作(查詢增加修改),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • 詳解Redis單線程架構(gòu)的優(yōu)勢與不足

    詳解Redis單線程架構(gòu)的優(yōu)勢與不足

    很多人都遇到過這么一道面試題:Redis是單線程還是多線程?這個(gè)問題既簡單又復(fù)雜,說他簡單是因?yàn)榇蠖鄶?shù)人都知道Redis是單線程,說復(fù)雜是因?yàn)檫@個(gè)答案其實(shí)并不準(zhǔn)確,本文就給大家講講Redis單線程架構(gòu)的優(yōu)勢與不足,需要的朋友可以參考下
    2024-02-02
  • 一文教你學(xué)會Redis的事務(wù)

    一文教你學(xué)會Redis的事務(wù)

    Redis?作為內(nèi)存的存儲中間件,已經(jīng)是面試的面試題必問之一了。今天小編就來和大家一起來聊聊Redis的事務(wù)吧,希望對大家有所幫助
    2022-08-08
  • 關(guān)于redis的延遲雙刪策略總結(jié)

    關(guān)于redis的延遲雙刪策略總結(jié)

    這篇文章主要介紹了關(guān)于redis的延遲雙刪策略總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • redis使用skiplist跳表的原因解析

    redis使用skiplist跳表的原因解析

    經(jīng)常會有人問這個(gè)問題,redis中為什么要使用跳表?這個(gè)問題,redis作者已經(jīng)給出過明確答案,今天通過本文再給大家講解下這個(gè)問題,對redis?skiplist跳表知識感興趣的朋友一起看看吧
    2022-10-10
  • Redis?sentinel哨兵集群的實(shí)現(xiàn)步驟

    Redis?sentinel哨兵集群的實(shí)現(xiàn)步驟

    本文主要介紹了Redis?sentinel哨兵集群的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 一步步教會你redis如何配置密碼

    一步步教會你redis如何配置密碼

    Redis的配置文件中可以設(shè)置密碼來保護(hù)訪問,下面這篇文章主要給大家介紹了關(guān)于redis如何配置密碼的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01

最新評論