久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何讓Redis的Value過期

共計(jì) 981 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。

這篇文章給大家介紹如何讓 Redis 的 Value 過期,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

Redis 的持久化特性是它的一大亮點(diǎn),但是它并不會(huì)被我們用來做持久化存儲(chǔ)。因此,如何讓 Redis 的 key 或 value 過期就顯得非常重要!今天,我就簡(jiǎn)單的來說一下,這個(gè)面試題!

Redis 本身是自帶的有過期機(jī)制的,但是這個(gè)過期機(jī)制只針對(duì)具體的 Key 過期,而 Value 如何過期,沒有特定的功能。但是在某些場(chǎng)景下,往往還需要讓 Redis 的 Value 過期,而 Key 不過期。

比如,我們現(xiàn)在有一個(gè)需求,需要對(duì) 15 分鐘內(nèi)的文章進(jìn)行一次閱讀統(tǒng)計(jì)。并且要求每分鐘統(tǒng)計(jì)一次,找出熱點(diǎn)文章,做特殊處理。每篇文章都有一個(gè)唯一 ID 進(jìn)行標(biāo)示。

現(xiàn)舉例有文章的閱讀數(shù)量變化如下:

[100, 520, 666, 888, 996 ...]

如果文章太多,就會(huì)浪費(fèi)很多的內(nèi)存空間!我們需要及時(shí)清理一些 Value 數(shù)據(jù),而讓 Key 過期,可能就不太適用我們的場(chǎng)景了!

那么如何做呢?

這個(gè)時(shí)候,Redis 的有序集合就可以派上用場(chǎng)了!

通過對(duì)指定的值可以指定 score,然后根據(jù) score 來進(jìn)行排序;然后再通過 ZRANGEBYSCORE 來獲取一定范圍內(nèi) score 所對(duì)應(yīng)的 value。

ZRANGEBYSCORE key score1 #  文章 id  時(shí)間戳   閱讀數(shù)  ZADD id 1577591750 996

現(xiàn)在,如果我們想要獲取 15 分鐘內(nèi)的數(shù)據(jù),就可以這樣做:

ZRANGEBYSCORE id now - 15 * 60 now

但還是不夠完美,因?yàn)槲覀兊闹惦m然是取對(duì)了,可 Value 并沒有過期。

所以,針對(duì)上面的命令,我們還可以再優(yōu)化一下!

ZRANGEBYSCORE id 0 now - 15 * 60

最后,你還需要注意的是,除了 Value 過期,key 也要注意,key 也需要設(shè)置過期。

# 24  小時(shí)后整個(gè)  key  過期 EXPIRE key 24 * 60 * 60

上面我的這個(gè)例子可能不是特別的恰當(dāng),針對(duì)的也是有序集合。如果是非有序集合,也有網(wǎng)友回答說,先 get 值,然后淘汰舊數(shù)據(jù)后,再重新 set 值。不過,我的建議是選擇合適的數(shù)據(jù)結(jié)構(gòu)更重要!

關(guān)于如何讓 Redis 的 Value 過期就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-08-16發(fā)表,共計(jì)981字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒有評(píng)論)
主站蜘蛛池模板: 磴口县| 广平县| 佛学| 共和县| 梁平县| 长葛市| 玛曲县| 榕江县| 老河口市| 东兴市| 衡阳市| 宿迁市| 大港区| 昆明市| 兴城市| 宝兴县| 远安县| 永昌县| 无为县| 晴隆县| 乌拉特前旗| 苏尼特右旗| 田阳县| 苗栗市| 高安市| 綦江县| 子洲县| 衡水市| 宁国市| 开化县| 扬州市| 杭州市| 上栗县| 霍林郭勒市| 桐柏县| 舟山市| 深泽县| 昆明市| 张家港市| 沧源| 巴塘县|