為給定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...