Redis附加功能之鍵到期功能

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   strong   2014   div   sp   

一、鍵到期功能的相關命令

二、設定存留時間

Redis 提供了兩個命令來設定鍵的存留時間(TTL,time to live),它們分別是:

如果給定的鍵不存在,那麼 EXPIRE 和 PEXPIRE 將返回 0 ,表示設定失敗;如果命令返回 1 ,那麼表示設定成功。
當一個鍵被設定了存留時間之後,它的存留時間將會隨著時間的流逝而減少:時間過去一毫秒,鍵的存留時間就減少一毫秒;時間過去一秒鐘,鍵的存留時間就減少一秒鐘;以此類推。
當一個鍵的存留時間被減少至低於 0 時,Redis 就會自動將這個鍵刪除掉

EXPIRE樣本:

redis> SET msg "hello world"OKredis> EXPIRE msg 5 # 設定存留時間(integer) 1redis> EXISTS msg # 仍然存在(integer) 1redis> EXISTS msg # 已被自動刪除(integer) 0

 

嚴格來說,設定存留時間為 5 ,會讓鍵存在 6 秒鐘。

PEXPIRE 樣本:

redis> PEXPIRE number 5500(integer) 1redis> EXISTS number(integer) 1redis> EXISTS number(integer) 0

 

注 1 :一秒鐘 = 1000 毫秒
注 2 :Redis 預設每 100 毫秒檢查一次鍵是否到期,所以上表也是以每 100 毫秒為單位列出的。

三、設定到期時間

Redis 提供了兩個命令用於設定鍵的到期時間(expire time):

如果給定的鍵不存在,那麼 EXPIREAT 和 PEXPIREAT 將返回 0 ,表示設定失敗;如果命令返回 1 ,那麼表示設定成功。
對於被設定了到期時間的鍵來說,當鍵的到期時間小於目前時間的時候,Redis 就會自動地刪除該鍵

EXPIREAT 樣本:

redis> SET msg "time to go"OKredis> EXPIREAT msg 1000000005(integer) 1redis> EXISTS msg # 1000000005 之前(integer) 1redis> EXISTS msg # 1000000005 之後(integer) 0

 

PEXPIREAT 樣本:

redis> SET song "Last Night, Good Night"OKredis> PEXPIREAT song 1000000005500(integer) 1redis> EXISTS song # 1000000005500 之前(integer) 1redis> EXISTS song # 1000000005500 之後(integer) 0

 

四、存留時間和到期時間的區別

設定存留時間和設定到期時間都可以讓 Redis 自動刪除指定的鍵,它們的區別在於設定“鍵什麼時候要被刪除”的方式不同

EXPIRE 和 PEXIRE 的作用是讓鍵在 N 秒鐘或者 N 毫秒之後被刪除。
EXPIREAT 和 PEXPIREAT 的作用則是讓鍵在指定的 UNIX 時間到達之後被刪除。

帶有存留時間的鍵就像是一個倒計時器,它會倒數 5、4、3、2、1、0,然後被刪掉。
而帶有到期時間的鍵則像是一個定時器,它會在指定的時間來臨之後被刪掉。

五、返回鍵的剩餘存留時間

在為一個鍵設定到期時間或者存留時間之後,使用者可以使用 TTL 命令或者 PTTL 命令查看這個鍵的剩餘存留時間,以此來獲知鍵還有多久才會被 Redis 刪除:

TTL 和 PTTL 可能會返回三種不同的值:

TTL 和 PTTL 樣本:

redis> SET msg "hello"OKredis> EXPIRE msg 10086(integer) 1redis> TTL msg(integer) 10083redis> PTTL msg(integer) 10079336

 

redis> SET number 10086OKredis> EXPIREAT number 1408498480(integer) 1redis> TTL number # 距離 14...80 的秒數(integer) 15redis> PTTL number # 距離 14...80 的毫秒數(integer) 11651

注意:Redis 並沒有提供查看鍵的到期時間的命令,所以對於一個設定了到期時間的鍵來說,我們只能使用TTL 和 PTTL 來查看它的剩餘存留時間

六、移除鍵的到期時間或存留時間

PERSIST key

 

移除為鍵 key 設定的到期時間或存留時間,使得它不會被 Redis 自動刪除。
移除成功時命令返回 1 ;如果命令沒有設定到期時間或存留時間,那麼命令返回 0 。

PERSIST樣本:

redis> SET msg "hello"OKredis> EXPIRE msg 30(integer) 1redis> TTL msg(integer) 28redis> PERSIST msg(integer) 1redis> TTL msg(integer) -1

 

redis> SET number 10086OKredis> EXPIREAT number 1408499100(integer) 1redis> TTL number(integer) 25redis> PERSIST number(integer) 1redis> TTL number(integer) -1

 

Redis附加功能之鍵到期功能

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.