2014-09-02 106 views

回答

10

不,Redis沒有全局/默認TTL的概念,是的,您必須獨立設置每個密鑰。但是,根據您的要求和您要做的事情,可能有其他方法可以實現您的目標。換句話說,你爲什麼需要它?

例如,如果您想使用Redis作爲緩存而不必擔心必須刪除「舊」項目,只需將maxmemory_policy設置爲allkey-lru即可。每當Redis的內存耗盡時,這將驅逐最近最少使用的密鑰。

編輯:有關更多信息,請參閱@arganzheng和@Kristján下面評論中的有用鏈接,以及redis.conf配置文件中的內嵌文檔。

+0

看到這個:http://redis.io/topics/config – arganzheng 2015-11-24 12:14:44

+1

也http://redis.io/topics/lru-cache – 2015-12-28 23:20:20

3

如果要設置一個鍵,就可以設置在同一時間TTL: look at the set command

的一側,您可以通過腳本做到了這一點(像Linux的 - 60秒):

for k in `redis-cli --raw keys '*'` ; do redis expire $k 60;done 
+0

「鍵」在生產中是可怕的,因爲它同步鎖定數據庫。只有普通的小型數據庫可以逃脫這一點。如果你想遍歷鍵,使用SCAN。 這個選項的另一個問題是,它實際上會刷新所有按鍵的TTL,所以所有的按鍵都會永遠活着,除非你確保運行腳本的次數少於你想說的TTL。如果您想管理網絡會話,並且需要在30天后過期,那麼您只能每31天運行腳本... – 2017-05-25 22:58:24

相關問題