Redis設定和更新Key的過期時間

2021-08-28 14:08:08 字數 1912 閱讀 4886

為給定key設定生存時間,當key過期時(生存時間為0),它會被自動刪除。

在 redis 中,帶有生存時間的key被稱為『易失的』(volatile)。

生存時間可以通過使用 del 命令來刪除整個key來移除,或者被 set 和 getset 命令覆寫(overwrite),這意味著,如果乙個命令只是修改(alter)乙個帶生存時間的key的值而不是用乙個新的key值來代替(replace)它的話,那麼生存時間不會被改變。

比如說,對乙個key執行 incr 命令,對乙個列表進行 lpush 命令,或者對乙個雜湊表執行 hset 命令,這類操作都不會修改key本身的生存時間。

另一方面,如果使用 rename 對乙個key進行改名,那麼改名後的key的生存時間和改名前一樣。

rename 命令的另一種可能是,嘗試將乙個帶生存時間的key改名成另乙個帶生存時間的another_key,這時舊的another_key(以及它的生存時間)會被刪除,然後舊的key會改名為another_key,因此,新的another_key的生存時間也和原本的key一樣。

使用 persist 命令可以在不刪除key的情況下,移除key的生存時間,讓key重新成為乙個『持久的』(persistent)key

更新生存時間

可以對乙個已經帶有生存時間的key執行 expire 命令,新指定的生存時間會取代舊的生存時間。

過期時間的精確度

在 redis 2.4 版本中,過期時間的延遲在 1 秒鐘之內 —— 也即是,就算key已經過期,但它還是可能在過期之後一秒鐘之內被訪問到,而在新的 redis 2.6 版本中,延遲被降低到 1 毫秒之內。

redis 2.1.3 之前的不同之處

在 redis 2.1.3 之前的版本中,修改乙個帶有生存時間的key會導致整個key被刪除,這一行為是受當時複製(replication)層的限制而作出的,現在這一限制已經被修復。

可用版本:

>= 1.0.0

時間複雜度:

o(1)

返回值:

設定成功返回1

key不存在或者不能為key設定生存時間時(比如在低於 2.1.3 版本的 redis 中你嘗試更新key的生存時間),返回0

redis> set cache_page "www.google.com"

okredis> expire cache_page 30 # 設定過期時間為 30 秒

(integer) 1

redis> ttl cache_page # 檢視剩餘生存時間

(integer) 23

redis> expire cache_page 30000 # 更新過期時間

(integer) 1

redis> ttl cache_page

(integer) 29996

redis的大key和熱key問題

redis的大key和熱key實際上就是經常被訪問的key或者占用空間比較大的key。有什麼影響?舉個栗子,比如說某個明星出軌了,這個明星的搜尋量就會暴增,對redis造成很大的衝擊。redis檢視大key命令 redis cli bigkeys redis檢視熱key命令 redis cli ho...

Redis的key過期設定 查詢 清理

1.redis過期時間介紹 有時候我們並不希望redis的key一直存在。例如快取,驗證碼等資料,我們希望它們能在一定時間內自動的被銷毀。redis提供了一些命令,能夠讓我們對key設定過期時間,並且讓key過期之後被自動刪除 2.redis過期時間相關命令 1.expire pexpire exp...

redis中key的設定方法步驟

redis set命令用於設定給定key的值。如果key已經儲存其他值,set就覆寫舊值,且無視型別。redis set命令基本語程式設計客棧法如下 redis 127.0.0.1 6379 set key name value 返回值 在redis2.6.12以前版本,set命令總是返回ok 從r...