在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Redis的刪除策略和內存淘汰機制介紹

麥辣雞腿堡 ? 來源:程序員庫森 ? 作者:程序員庫森 ? 2023-10-09 11:06 ? 次閱讀

Redis過期鍵的刪除策略?

Redis的過期刪除策略就是:惰性刪除和定期刪除兩種策略配合使用。

惰性刪除:Redis的惰性刪除策略由db.c/expireIfNeeded函數實現,所有鍵讀寫命令執行之前都會調用 expireIfNeeded函數對其進行檢查,如果過期,則刪除該鍵,然后執行鍵不存在的操作;未過期則不作操作,繼續執行原有的命令。

定期刪除:由Redis.c/activeExpireCycle 函數實現,函數以一定的頻率運行,每次運行時,都從一定數量的數據庫中取出一定數量的隨機鍵進行檢查,并刪除其中的過期鍵。

附:刪除key常見的三種處理方式。

1、定時刪除

在設置某個key 的過期時間同時,我們創建一個定時器,讓定時器在該過期時間到來時,立即執行對其進行刪除的操作。

優點:定時刪除對內存是最友好的,能夠保存內存的key一旦過期就能立即從內存中刪除。

缺點:對CPU最不友好,在過期鍵比較多的時候,刪除過期鍵會占用一部分 CPU 時間,對服務器的響應時間和吞吐量造成影響。

2、惰性刪除

設置該key 過期時間后,我們不去管它,當需要該key時,我們在檢查其是否過期,如果過期,我們就刪掉它,反之返回該key。

優點:對 CPU友好,我們只會在使用該鍵時才會進行過期檢查,對于很多用不到的key不用浪費時間進行過期檢查。

缺點:對內存不友好,如果一個鍵已經過期,但是一直沒有使用,那么該鍵就會一直存在內存中,如果數據庫中有很多這種使用不到的過期鍵,這些鍵便永遠不會被刪除,內存永遠不會釋放。從而造成內存泄漏。

3、定期刪除

每隔一段時間,我們就對一些key進行檢查,刪除里面過期的key。

優點:可以通過限制刪除操作執行的時長和頻率來減少刪除操作對 CPU 的影響。另外定期刪除,也能有效釋放過期鍵占用的內存。

缺點:難以確定刪除操作執行的時長和頻率。如果執行的太頻繁,定期刪除策略變得和定時刪除策略一樣,對CPU不友好。如果執行的太少,那又和惰性刪除一樣了,過期鍵占用的內存不會及時得到釋放。另外最重要的是,在獲取某個鍵時,如果某個鍵的過期時間已經到了,但是還沒執行定期刪除,那么就會返回這個鍵的值,這是業務不能忍受的錯誤。

Redis內存淘汰機制?

當現有內存大于 maxmemory 時,便會觸發Redis主動淘汰內存方式,有如下幾種淘汰方式:

Redis 4.0前提供 6種數據淘汰策略:

volatile-lru:利用LRU算法移除設置過過期時間的key (LRU:最近使用 Least Recently Used )

allkeys-lru:當內存不足以容納新寫入數據時,在鍵空間中,移除最近最少使用的key(這個是最常用的)

volatile-ttl:從已設置過期時間的數據集(server.db[i].expires)中挑選將要過期的數據淘汰

volatile-random:從已設置過期時間的數據集(server.db[i].expires)中任意選擇數據淘汰

allkeys-random:從數據集(server.db[i].dict)中任意選擇數據淘汰

no-eviction:禁止驅逐數據,也就是說當內存不足以容納新寫入數據時,新寫入操作會報錯。這個應該沒人使用吧!

Redis 4.0后增加以下兩種:

volatile-lfu:從已設置過期時間的數據集(server.db[i].expires)中挑選最不經常使用的數據淘汰(LFU(Least Frequently Used)算法,也就是最頻繁被訪問的數據將來最有可能被訪問到)

allkeys-lfu:當內存不足以容納新寫入數據時,在鍵空間中,移除最不經常使用的key。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3055

    瀏覽量

    74331
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62973
  • Redis
    +關注

    關注

    0

    文章

    378

    瀏覽量

    10944
收藏 人收藏

    評論

    相關推薦

    如何排查Redis性能問題 Redis內部實現原理解析

    作為業務開發人員,我們需要了解 Redis 的基本原理,例如各個命令執行的時間復雜度、數據過期策略、數據淘汰策略等,從而更合理地使用 Redis
    發表于 07-05 12:33 ?352次閱讀
    如何排查<b class='flag-5'>Redis</b>性能問題 <b class='flag-5'>Redis</b>內部實現原理解析

    Redis內存淘汰機制

    redis淘汰策略
    發表于 09-27 07:55

    淺析Redis的過期機制

    Redis數據過期策略詳解
    發表于 10-12 15:12

    Redis的發布訂閱機制

    Redis之發布訂閱機制
    發表于 06-11 13:21

    Redis常見面試題及答案

    redis的數據類型,以及每種數據類型的使用場景,Redis 內部結構 redis的過期策略以及內存
    的頭像 發表于 12-16 11:44 ?2241次閱讀
    <b class='flag-5'>Redis</b>常見面試題及答案

    Redis持久化機制的實現原理和使用技巧

    Redis將數據存儲在內存中,宕機或重啟都會使內存數據全部丟失, Redis的持久化機制用來保證數據不會因為故障而丟失。
    的頭像 發表于 09-13 16:42 ?1039次閱讀

    redis緩存滿了怎么辦?

    只有在 Redis 的運行內存達到了某個閥值,才會觸發內存淘汰機制,這個閥值就是我們設置的最大運行內存
    發表于 08-21 10:42 ?253次閱讀
    <b class='flag-5'>redis</b>緩存滿了怎么辦?

    Redis 的數據清理策略

    本文整理 Redis 的數據清理策略所有代碼來自 Redis version :5.0, 不同版本的 Redis 策略可能有調整
    發表于 09-19 14:24 ?414次閱讀
    <b class='flag-5'>Redis</b> 的數據清理<b class='flag-5'>策略</b>

    Redis持久化機制介紹

    Redis持久化機制? 為了能夠重用Redis數據,或者防止系統故障,我們需要將Redis中的數據寫入到磁盤空間中,即持久化。Redis提供
    的頭像 發表于 10-09 11:44 ?526次閱讀
    <b class='flag-5'>Redis</b>持久化<b class='flag-5'>機制</b><b class='flag-5'>介紹</b>

    Redis 如何刪除數據

    閻王的處理時間會變得很長,而且處理繁忙,Redis 就會出現卡頓現象。 Redis 有三種策略刪除過期 Key 相關命令 expire key seconds # 過期時間為秒數, k
    的頭像 發表于 10-09 16:01 ?558次閱讀

    為什么使用top命令時,Redis還是占了很多內存?

    實際上,這是因為,當數據刪除后,Redis 釋放的內存空間會由內存分配器管理,并不會立即返回給操作系統。所以,操作系統仍然會記錄著給 Redis
    的頭像 發表于 12-01 09:25 ?696次閱讀
    為什么使用top命令時,<b class='flag-5'>Redis</b>還是占了很多<b class='flag-5'>內存</b>?

    redis機制原理

    Redis是一款高性能的開源內存數據庫,用于存儲和檢索數據。在多線程或分布式環境中,需要實現并發控制來保證數據一致性和線程安全。Redis提供了一種簡單而高效的鎖機制,可以用來實現并發
    的頭像 發表于 12-04 11:08 ?1306次閱讀

    redis淘汰策略

    Redis是一種基于內存的鍵值存儲系統,為了充分利用內存,Redis采用了一些淘汰策略來管理
    的頭像 發表于 12-04 16:23 ?594次閱讀

    redis的lru原理

    Redis是一種基于內存的鍵值數據庫,它使用了LRU(Least Recently Used)算法來進行緩存的數據淘汰。LRU算法的核心思想是最近最少使用的數據將會在未來也不常用,因此應該優先
    的頭像 發表于 12-05 09:56 ?672次閱讀

    redis持久化機制優缺點

    Redis是一個基于內存的高性能鍵值存儲系統,它提供了多種持久化機制來保證數據的可靠性。本文將詳細介紹Redis的持久化
    的頭像 發表于 12-05 10:03 ?766次閱讀
    主站蜘蛛池模板: 特黄一级毛片 | 中国一级特黄高清免费的大片 | 中文天堂最新版在线中文 | 天天干天天曰 | 天天操天天射天天 | 夜夜操夜夜骑 | 午夜视频在线观看完整高清在线 | 在线观看黄色一级片 | 91md天美精东蜜桃传媒在线 | 国产在线永久视频 | 日本亚洲黄色 | 免费看国产一级特黄aa大片 | 天天干成人网 | 色综合图片二区150p | 男人天堂色男人 | 黄在线观看在线播放720p | 色视频免费观看高清完整 | 特级一级毛片视频免费观看 | 日本三级视频在线 | 欧美日本色| 免费成人黄色 | 久久综合婷婷 | 日本又粗又长一进一出抽搐 | 黄网站在线观看永久免费 | 高清视频一区二区 | 国产亚洲综合色就色 | 三级在线观看免播放网站 | 网站在线观看你懂的 | 午夜精品久久久久久久久 | 美国激情ap毛片 | 欧美午夜视频 | 模特视频一二三区 | 色女人在线视频 | 亚洲一二三区在线观看 | 性欧美视频在线观看 | 亚洲色图88 | 人人人干| 亚洲va久久久噜噜噜久久 | 五月激激 | 台湾毛片| 亚洲激情都市 |