這篇文章給大家介紹如何讓redis的Value過期,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
仁和ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
Redis 的持久化特性是它的一大亮點,但是它并不會被我們用來做持久化存儲。因此,如何讓 Redis 的 key 或 value 過期就顯得非常重要!今天,我就簡單的來說一下,這個面試題!
Redis 本身是自帶的有過期機制的,但是這個過期機制只針對具體的 Key 過期,而 Value 如何過期,沒有特定的功能。但是在某些場景下,往往還需要讓 Redis 的 Value 過期,而 Key 不過期。
比如,我們現(xiàn)在有一個需求,需要對 15 分鐘內(nèi)的文章進行一次閱讀統(tǒng)計。并且要求每分鐘統(tǒng)計一次,找出熱點文章,做特殊處理。每篇文章都有一個唯一 ID 進行標示。
現(xiàn)舉例有文章的閱讀數(shù)量變化如下:
[100, 520, 666, 888, 996 ...]
如果文章太多,就會浪費很多的內(nèi)存空間!我們需要及時清理一些 Value 數(shù)據(jù),而讓 Key 過期,可能就不太適用我們的場景了!
那么如何做呢?
這個時候,Redis 的有序集合就可以派上用場了!
通過對指定的值可以指定 score,然后根據(jù) score 來進行排序;然后再通過 ZRANGEBYSCORE 來獲取一定范圍內(nèi) score 所對應(yīng)的 value。
ZRANGEBYSCORE key score1 # 文章id 時間戳 閱讀數(shù) ZADD id 1577591750 996
現(xiàn)在,如果我們想要獲取 15 分鐘內(nèi)的數(shù)據(jù),就可以這樣做:
ZRANGEBYSCORE id now - 15 * 60 now
但還是不夠完美,因為我們的值雖然是取對了,可 Value 并沒有過期。
所以,針對上面的命令,我們還可以再優(yōu)化一下!
ZRANGEBYSCORE id 0 now - 15 * 60
最后,你還需要注意的是,除了 Value 過期,key 也要注意,key 也需要設(shè)置過期。
# 24 小時后整個 key 過期EXPIRE key 24 * 60 * 60
上面我的這個例子可能不是特別的恰當(dāng),針對的也是有序集合。如果是非有序集合,也有網(wǎng)友回答說,先 get 值,然后淘汰舊數(shù)據(jù)后,再重新 set 值。不過,我的建議是選擇合適的數(shù)據(jù)結(jié)構(gòu)更重要!
關(guān)于如何讓Redis的Value過期就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。