亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

大家都應該知道的Redis過期鍵與過期策略

2020-10-28 21:28:41
字體:
來源:轉載
供稿:網友

今天,我和大家分享一篇關于 Redis 有關過期鍵的內容,主要有四個內容:

  • 如何設置過期鍵
  • 如何取消設置的過期時間
  • 過期鍵的過期策略是怎樣的
  • RDB、AOF 和復制對過期鍵的處理又是怎樣的

設置鍵的生存時間或過期時間

redis 一共有 4 個命令來設置鍵的生存時間(可以存活多久)或過期時間(什么時候被刪除)

  • expire <key> <ttl>:將 key 的生存時間設置為 ttl 秒
  • pexpire <key> <ttl>:將 key 的生存時間設置為 ttl 毫秒
  • expireat <key> <timestamp>:將 key 的過期時間設置為 timestamp 所指定的秒數時間戳
  • pexpireat <key> <ttl>:將 key 的過期時間設置為 timestamp 所指定的毫秒數時間戳

上述四種命令本質上都是通過 pexpireat 命令來實現的。

例子:127.0.0.1:6379> set a testOK127.0.0.1:6379> EXPIRE a 5(integer) 1127.0.0.1:6379> get a // 距離設置生存時間命令的 5 秒內執行"test"127.0.0.1:6379> get a // 距離設置生存時間命令的 5 秒后執行(nil)127.0.0.1:6379> set b 12OK127.0.0.1:6379> EXPIREAT b 1545569500(integer) 1127.0.0.1:6379> time1) "1545569486"2) "108616"127.0.0.1:6379> get b // 距離設置 1545569500 所指定的秒數時間戳內執行"12"127.0.0.1:6379> time1) "1545569506"2) "208567"127.0.0.1:6379> get b // 距離設置 1545569500 所指定的秒數時間戳后執行(nil)

如果自己不小心設置錯了過期時間,那么我們可以刪除先前的過期時間

移除過期時間

persist <key> 命令可以移除一個鍵的過期時間,舉個栗子:

127.0.0.1:6379> EXPIRE c 1000(integer) 1127.0.0.1:6379> ttl c // 有過期時間(integer) 9996127.0.0.1:6379> PERSIST c(integer) 1127.0.0.1:6379> ttl c // 無過期時間(integer) -1PS:ttl 是以秒為單位,返回鍵的剩余生存時間;同理還有 pttl 命令是以毫秒為單位,返回鍵的剩余生存時間

此時,如果我們沒有移除過期時間,那么如果一個鍵過期了,那它什么時候會被刪除呢?

這個問題就會有以下三種答案了,它們分別代表三種不同的刪除策略

過期鍵的刪除策略

定時刪除

在設置鍵的過期時間的同時,創建一個定時器,讓定時器在鍵的過期時間來臨時,立即執行對鍵的刪除操作。

優點:對內存最友好的??梢约皶r釋放鍵所占用的內存。

缺點:對 CPU 不友好。特別在過期鍵比較多的情況下,刪除過期鍵會占用相當一部分 CPU 時間。同時在內存不緊張,CPU 緊張的情況下,將 CPU 用在刪除和當前任務不想關的過期鍵上,無疑會對服務器響應時間和吞吐量造成影響。

惰性刪除

放任鍵過期不管,但是每次從鍵空間中讀寫鍵時,都會檢查取得的鍵是否過期。如果過期就刪除該刪,否則就返回該鍵。(PS:鍵空間是一個保存了數據庫所有鍵值對的數據結構)

優點:對 CPU 最友好。只有在操作的時候進行過期檢查,刪除的目標僅限于當前需要處理的鍵,不會在刪除其他無關本次操作的過期鍵上花費任何 CPU 時間。

缺點:對內存不友好。這個十分容易理解了,鍵過期了,但因為一直沒有被訪問到,所以一直保留著(除非手動執行 flushdb 操來于清空當前數據庫中的所有 key。),相當于內存泄漏。

定期刪除

每隔一段時間,程序就對數據庫進行檢查,刪除里面的過期鍵。至于要刪除多少過期鍵,以及檢查多少數據庫,則有算法決定。

該策略是上述兩種策略的折中方案,需要通過實際情況,來設置刪除操作的執行時長和頻率。

明白了過期鍵的刪除策略后,那 redis 服務器又是采用什么策略來刪除過期鍵的呢?

實際上,Redis 服務器使用的是惰性刪除和定期刪除兩種策略,通過配合使用,服務器可以很好的平衡 CPU 和內存。

其中惰性刪除為 redis 服務器內置策略。而定期刪除可以通過以下兩種方式設置:

  • 配置 redis.conf 的 hz 選項,默認為10 (即 1 秒執行 10 次,值越大說明刷新頻率越快,對 Redis 性能損耗也越大)
  • 配置 redis.conf 的 maxmemory 最大值,當已用內存超過 maxmemory 限定時,就會觸發主動清理策略

RDB 對過期鍵的處理

生成 RDB 文件

程序會被數據庫中的鍵進行檢查,過期的鍵不會被保存到新創建的 RDB 文件中。因此數據庫中的過期鍵不會對生成新的 RDB 文件造成影響

載入 RDB 文件

這里需要分情況說明:

  • 如果服務器以主服務器模式運行,則在載入 RDB 文件時,程序會對文件中保存的鍵進行檢查,過期鍵不會被載入到數據庫中。所以過期鍵不會對載入 RDB 文件的主服務器造成影響。
  • 如果服務器以從服務器模式運行,則在載入 RDB 文件時,不論鍵是否過期都會被載入到數據庫中。但由于主從服務器在進行數據同步時,從服務器的數據會被清空。所以一般來說,過期鍵對載入 RDB 文件的從服務器也不會造成影響。

AOF 對過期鍵的處理

AOF 文件寫入

當服務器以 AOF 持久化模式運行時,如果數據庫某個過期鍵還沒被刪除,那么 AOF 文件不會因為這個過期鍵而產生任何影響,依舊保留。

而當過期鍵被刪除后,那么程序會向 AOF 文件追加一條 DEL 命令來顯式地記錄該鍵被刪除。

AOF 重寫

執行 AOF 重寫過程中,也會被數據庫的鍵進行檢查,已過期的鍵不會被保存到重寫后的 AOF 文件中。因此不會對 AOF 重寫造成影響

復制對過期鍵的處理

當服務器運行在復制模式下,由主服務器來控制從服務器的刪除過期鍵動作,目的是保證主從服務器數據的一致性。

那到底是怎么控制的呢?

  • 主服務器刪除一個過期鍵后,會向所有從服務器發送一個 DEL 命令,告訴從服務器刪除這個過期鍵
  • 從服務器接受到命令后,刪除過期鍵

PS:從服務器在接收到客戶端對過期鍵的讀命令時,依舊會返回該鍵對應的值給客戶端,而不會將其刪除。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精久久久久久| 日韩av电影免费观看高清| 日韩欧美在线免费观看| 国产免费一区二区三区在线能观看| 久久久久久久久久久91| 国产中文日韩欧美| 成人性生交大片免费看小说| 中文字幕不卡在线视频极品| 国产精品色午夜在线观看| 在线一区二区日韩| 国产精品九九久久久久久久| 国产在线视频2019最新视频| 亚洲欧美在线一区| 亚洲精品成人免费| 久久久久久com| 国产在线精品自拍| 亚洲美女性生活视频| 亚洲欧洲一区二区三区久久| 国产精品爱久久久久久久| 成人写真福利网| 亚洲国产中文字幕久久网| 国产精品丝袜高跟| 97在线看福利| 97在线视频免费看| 中文字幕亚洲图片| 高跟丝袜一区二区三区| 2018国产精品视频| 夜夜嗨av色一区二区不卡| 国产精品私拍pans大尺度在线| 欧美交受高潮1| 久久久国产一区| 91精品国产亚洲| 国语自产偷拍精品视频偷| 黄色一区二区三区| 精品国产户外野外| 亚洲精品99久久久久中文字幕| 最近2019中文字幕大全第二页| 狠狠躁夜夜躁久久躁别揉| 日韩精品在线视频美女| 欧美另类高清videos| 精品久久久国产精品999| 欧美华人在线视频| 中国china体内裑精亚洲片| 国产精品久久久久久一区二区| 亚洲香蕉av在线一区二区三区| 亚洲精品影视在线观看| 欧美成人中文字幕| 91精品在线观看视频| 一区二区三区四区视频| 亚洲韩国青草视频| 中国日韩欧美久久久久久久久| 亚洲精品99久久久久中文字幕| 亚洲国产精品女人久久久| 91精品视频免费观看| 欧美性xxxxxx| 久久久久久久久久久91| 亚洲精品mp4| 欧美在线视频免费| 国产亚洲人成网站在线观看| 午夜剧场成人观在线视频免费观看| 欧美国产极速在线| 亚洲天堂网站在线观看视频| 亚洲免费精彩视频| 欧美一级淫片aaaaaaa视频| 欧美一区二区三区免费观看| 97国产精品视频人人做人人爱| 国产精品视频免费观看www| 狠狠色狠狠色综合日日小说| 日韩av影视在线| 欧美日韩国产综合新一区| 久久精品国产一区二区三区| 亚洲日韩第一页| 精品高清一区二区三区| 欧美一级黄色网| 久久久久九九九九| 欧美日韩视频在线| 国产精品美女网站| 欧美一乱一性一交一视频| 国产欧美最新羞羞视频在线观看| 日韩高清av一区二区三区| 久久亚洲综合国产精品99麻豆精品福利| 国产亚洲成av人片在线观看桃| 久久久久久久影视| 国产精品国模在线| 国产91精品久久久久久久| 性欧美亚洲xxxx乳在线观看| 色妞久久福利网| 97国产精品视频人人做人人爱| 中文字幕亚洲字幕| 伊人伊成久久人综合网站| 久久69精品久久久久久久电影好| 欧美一级在线播放| 国产精品美女在线| 91性高湖久久久久久久久_久久99| 精品国产乱码久久久久久虫虫漫画| 欧美性理论片在线观看片免费| 亚洲精选中文字幕| 国产精品香蕉国产| 午夜精品视频在线| 中文字幕在线看视频国产欧美| 色偷偷888欧美精品久久久| 久久最新资源网| 欧美日韩午夜视频在线观看| 成人免费福利在线| 最近中文字幕mv在线一区二区三区四区| 深夜福利91大全| 欧美日韩国产成人在线观看| 亚洲深夜福利视频| 欧美日韩国产中文精品字幕自在自线| 国产日韩精品在线观看| 精品日本高清在线播放| 精品无码久久久久久国产| 日韩在线视频线视频免费网站| 日韩av综合网| 国产91精品久久久久| 精品一区二区三区四区在线| 久久中文精品视频| 亚洲色图35p| 久久综合久中文字幕青草| 成人午夜小视频| 国产精品福利在线| 国产一区二区三区丝袜| 俺去了亚洲欧美日韩| 精品免费在线视频| 久久全球大尺度高清视频| 国产精品网站大全| 亚洲人成在线免费观看| 一夜七次郎国产精品亚洲| 亚洲娇小xxxx欧美娇小| 91精品国产免费久久久久久| 欧美午夜视频在线观看| 久久精品国产一区二区三区| 美女黄色丝袜一区| 久久亚洲精品视频| 97视频在线观看免费| 欧美一级免费看| 国产成人精品久久二区二区| 亚洲精品久久久久中文字幕欢迎你| 国产精品久久久久久久久久| 在线播放国产一区中文字幕剧情欧美| 欧美一级淫片播放口| 国产亚洲精品久久久| 91精品视频在线看| 欧美成人合集magnet| 成人免费视频xnxx.com| 国产在线视频2019最新视频| 欧美性xxxxxx| 亚洲欧美在线看| 一区二区三区回区在观看免费视频| 精品视频—区二区三区免费| 亚洲日本中文字幕免费在线不卡| 91免费综合在线| 亚洲另类图片色| 97在线视频免费| 亚洲精品在线观看www| 久久99精品视频一区97| 午夜精品久久久99热福利| 日韩美女主播视频| 亚洲第一福利视频| 欧美成人午夜剧场免费观看| 国产女同一区二区| 中文字幕欧美亚洲| 国产成人高清激情视频在线观看| 欧美电影免费观看高清|