一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - 你說,Redis如何實現鍵值自動清理?

你說,Redis如何實現鍵值自動清理?

2021-12-23 22:52Hollis Redis

Redis主要通過兩種方式相互配合來實現鍵值的清理,即:過期策略和內存淘汰機制。

你說,Redis如何實現鍵值自動清理?

Redis緩存作為提高系統性能最好的方式相信大家對其一定不陌生,各位禿頭老碼農不僅需要掌握Redis的基礎用法還得了解Redis的相關原理,比如Redis過期策略和內存淘汰機制。

大家都知道,Redis緩存使用的是內存資源,雖然緩存服務器會配置比較高的內存資源,但如果對于Redis中的緩存數據我們不管不顧,內存資源總有耗盡的時候,這時緩存服務器就無法再對外提供服務了。我們要用有限的服務器資源支撐更多的業務服務,就必須要讓那些訪問頻率不高的緩存刪除掉,為新的緩存騰出內存空間。

Redis主要通過兩種方式相互配合來實現鍵值的清理,即:過期策略和內存淘汰機制。

內存淘汰策略

當 Redis 節點分配的內存使用到達最大值以后,為了繼續提供服務,Redis 會啟動內存淘汰策略,在Redis4.0之前主要是以下六種淘汰策略:

  • noeviction:不淘汰任何數據,當內存不足時,執行緩存新增操作會報錯,這種策略下可以保證數據不丟失,它也是 Redis 默認的內存淘汰策略。
  • allkeys-lru:淘汰整個鍵值中最久未使用的鍵值,這也就是我們常說的LRU算法。
  • allkeys-random:隨機淘汰任意鍵值。
  • volatile-lru:淘汰所有設置了過期時間的鍵值中最久未使用的鍵值。
  • volatile-random:隨機淘汰設置了過期時間的任意鍵值。
  • volatile-ttl:優先淘汰設置了過期時間中更早過期的鍵值。

通過上面的內存淘汰策略可以看出,以 allkeys- 開頭的表示從所有key中進行數據淘汰,而以 volatile-開頭的會從設置了過期時間的key中進行數據淘汰。

而在Redis4.0版本中又新增了2種淘汰策略:

  • allkeys-lfu,淘汰整個鍵值中最少使用的鍵值,這也就是我們常說的LRU算法。
  • volatile-lfu,淘汰所有設置了過期時間的鍵值中最少使用的鍵值。

LRU(Least Recently Used,最近最少使用),根據最近被使用的時間,離當前最遠的數據優先被淘汰;

LFU(Least Frequently Used,最不經常使用),在一段時間內,緩存數據被使用次數最少的會被淘汰。

大家可以在 redis.conf 配置文件中修改配置項 maxmemory-policy ,將其修改成需要設置的類型即可。

緩存過期策略

內存淘汰策略是當內存不夠用時才會觸發的一種機制,是緩存服務層面的操作,而過期策略定義的是具體緩存數據何時失效。我們在使用Redis的時候經常會給redis的key設置一個過期時間如:EXPIRE key 30,過期策略就是指當 Redis 中緩存的 key 過期了,Redis 如何處理。

對于已經過期的數據,Redis將使用兩種策略搭配使用來刪除這些過期的鍵值,分別是惰性刪除,定期刪除。

惰性刪除

惰性刪除 是指 Redis 服務器不主動刪除過期的鍵值,而是在客戶端要獲取某個鍵值時,Redis會先去檢測一下這個key是否已經過期,如果沒有過期則返回給客戶端,如果已經過期了,那么Redis會刪除這個key并返回null給客戶端。

惰性刪除可以解決一些過期了,但沒被定期刪除隨機抽取到的key。但有些過期的key既沒有被隨機抽取,也沒有被客戶端訪問,就會一直保留在數據庫,占用內存,長期下去可能會導致內存耗盡。所以Redis提供了內存淘汰機制來解決這個問題。

惰性刪除的優點是不會浪費太多的系統資源,只是在每次訪問時才檢查鍵值是否過期。缺點是像上面說的刪除過期鍵不及時,造成了一定的空間浪費。

定期刪除

定期刪除 是指 Redis 服務器每隔一段時間會檢查一下緩存數據庫,看看是否有過期鍵可以被清除。默認情況下 Redis 定期檢查的頻率是每秒掃描 10 次,用于定期清除過期鍵。當然此值還可以通過配置文件進行設置,在 redis.conf 中修改配置“hz”即可,默認的值為“hz 10”。

因為key太多,如果全盤掃描所有的key會非常耗性能,所以定期刪除是隨機抽取一些key來刪除。這樣就有可能刪除不完,需要惰性刪除配合。

原文地址:https://mp.weixin.qq.com/s/fogZZ6OwhEISrqVDtPq8Fg

延伸 · 閱讀

精彩推薦
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
主站蜘蛛池模板: 青视频在线 | 国产91精品在线观看 | 国产精品29页 | 为什么丈夫插我我却喜欢被打着插 | 国产成人精品第一区二区 | 成年看片免费高清观看 | 1024在线视频精品免费 | 欧美z0z0人禽交 | 成人青青草 | 特级非洲黑人一级毛片 | 干b视频在线观看 | 久久黄色免费 | 国产精品不卡高清在线观看 | 91se在线| 四虎永久在线精品国产 | 精品无人区乱码1区2区3区在线 | 免费高清特黄a 大片 | 99热免费在线| 国产成人精品曰本亚洲78 | 日本视频在线免费看 | 韩国一级淫片特黄特刺激 | 和直男装修工在工地啪 | 欧美破处摘花 | 女同久久另类99精品国产 | 无人区在线观看免费视频国语 | 日韩 欧美 国产 亚洲 中文 | 亚洲精品国产一区二区第一页 | 国产精品久久久久久久久久久久久久 | 国产成人精品曰本亚洲78 | 99视频在线观看免费视频 | 国产实拍会所女技师在线 | 好大好硬好深好爽想要吃奶 | 扒开女人下面使劲桶屁股动漫 | nxgx国产| 午夜国产精品视频 | 热99精品只有里视频最新 | 九九99香蕉在线视频美国毛片 | 日韩精品一二三区 | 欧美乱强 | 亚洲第一网色综合久久 | 99久热只有精品视频免费看 |