成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Redis sortedset實(shí)現(xiàn)元素自動(dòng)過期

marek / 504人閱讀

摘要:實(shí)現(xiàn)元素自動(dòng)過期這里的自動(dòng)過期,并沒有提供相應(yīng)的,但是可以使用一下方法來實(shí)現(xiàn)。原則上,只應(yīng)該清除掉到達(dá)過期時(shí)間的元素,未過期的元素則應(yīng)該保持。

Redis sortedset實(shí)現(xiàn)元素自動(dòng)過期

這里的自動(dòng)過期,Redis并沒有提供相應(yīng)的api,但是可以使用一下方法來實(shí)現(xiàn)。

需求背景

給用戶返回的文章要求七日內(nèi)不能重復(fù);文章是存放在java list里邊;(這一塊就是從db將文章拿出來,然后放入list,放入java內(nèi)存中)。

分析

一開始我的做法是這樣:

當(dāng)用戶第一次訪問的時(shí)候,創(chuàng)建一個(gè)key值為userId的緩存,value為title列表(文章標(biāo)題,文章唯一標(biāo)識(shí)),然后給這個(gè)key值設(shè)置過期時(shí)間。
但是這樣,到過期時(shí),整個(gè)列表都會(huì)被清掉。原則上,只應(yīng)該清除掉到達(dá)過期時(shí)間的元素,未過期的元素則應(yīng)該保持。這種方法不能實(shí)現(xiàn)預(yù)期效果。

可實(shí)現(xiàn)方案:

使用redis有序集合==sorted Set== 以及對(duì)應(yīng)的==ZREMRANGEBYLEX key min max==命令
移除有序集合中給定的字典區(qū)間的所有成員;

redis提供了響應(yīng)的數(shù)據(jù)結(jié)構(gòu)和api可以實(shí)現(xiàn):

ZADD key score1 member1 [score2 member2]  
向有序集合添加一個(gè)或多個(gè)成員,或者更新已存在成員的分?jǐn)?shù)

通過使用 ZREMRANGEBYSCORE key min max 命令刪除有序集合保存在key的最小值和最大值(含)之間的分?jǐn)?shù)的所有元素。 

通過定時(shí)去調(diào)用此命令,即可實(shí)現(xiàn)list元素自動(dòng)過期;

對(duì)應(yīng)相應(yīng)的實(shí)現(xiàn)方案:
使用redis來存儲(chǔ)給每個(gè)用戶下發(fā)的文章,對(duì)應(yīng)的key值為userId(用戶唯一標(biāo)識(shí)),value為title列表加上相關(guān)聯(lián)的score。

zadd userId score title 這里的score為當(dāng)前時(shí)間的時(shí)間戳; 

ZREMRANGEBYSCORE key 0 score  
這里的score設(shè)為當(dāng)前時(shí)間前7天對(duì)應(yīng)的時(shí)間的時(shí)間戳;(具體時(shí)間戳可以用java Calander類計(jì)算得到)

這里可以啟動(dòng)一個(gè)定時(shí)任務(wù)去定時(shí)調(diào)用這個(gè)命令即可

想要了解更多Redis 有序集合的資料。可參考以下資料:
Redis Zremrangebyscore 命令詳解
Redis 有序集合(sorted set)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67481.html

相關(guān)文章

  • 阿里云Redis開發(fā)規(guī)范

    摘要:摘要本文介紹了在使用阿里云的開發(fā)規(guī)范,從鍵值設(shè)計(jì)命令使用客戶端使用相關(guān)工具等方面進(jìn)行說明,通過本文的介紹可以減少使用過程帶來的問題。 摘要: 本文介紹了在使用阿里云Redis的開發(fā)規(guī)范,從鍵值設(shè)計(jì)、命令使用、客戶端使用、相關(guān)工具等方面進(jìn)行說明,通過本文的介紹可以減少使用Redis過程帶來的問題。 一、鍵值設(shè)計(jì) 1. key名設(shè)計(jì) (1)【建議】: 可讀性和可管理性 以業(yè)務(wù)名(或數(shù)據(jù)庫名...

    Jackwoo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<