亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在線等!Redis 有序列表第一次添加時設置生存時間?感激不盡

在線等!Redis 有序列表第一次添加時設置生存時間?感激不盡

aluckdog 2019-10-17 09:31:57
Redis有序列表使用zAdd方法添加key,如果key不存在則創建之,但是這個方法不支持設置過期時間,不能像SET那樣在創建的時候設置生存時間。目前的解決方案是這樣的,在使用zAdd之前先用exist方法判斷一下key是否存在,記一個值(true/false),然后調用過zAdd之后,再根據之前記的值來判斷是否設置生存時間。相關代碼$myKey='h123';$first=!$redis->exists($myKey);$redis->zAdd($myKey,[],123,'aaaaaaa');if($first){$redis->expire(3600*24);}有沒有更加優雅的寫法呢?或者說其他我不知道的redis命令?注:可能是我的描述不清楚,我要設的就是外層的key的生存時間,就是這個有序列表的生存時間,上面的代碼已經實現了我的要求,只不過不太優雅,所以有沒有更好的方式呢?
查看完整描述

2 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

redis只能針對最外層的key設置過期時間,內層的key都不行,set、zset、list的元素都不可以單獨設置過期。你說的set設置過期確定是對里面的元素設置???
                            
查看完整回答
反對 回復 2019-10-17
?
繁花不似錦

TA貢獻1851條經驗 獲得超4個贊

猜測題主應該想要:setex的效果,但SortedSet是沒有提供類似的方法的。另外,按這個代碼描述,這個緩存的過期時間是只能在創建時設置,后續不能刷新?如果是,那么即使是setex也無法滿足,必須要做exists判斷;如果不是,只調expire就可以了。
                            
查看完整回答
反對 回復 2019-10-17
  • 2 回答
  • 0 關注
  • 292 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號