摘要:實(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ù)期效果。
使用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
摘要:摘要本文介紹了在使用阿里云的開發(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ù)庫名...
閱讀 3018·2021-11-23 09:51
閱讀 3622·2021-10-13 09:39
閱讀 2507·2021-09-22 15:06
閱讀 889·2019-08-30 15:55
閱讀 3159·2019-08-30 15:44
閱讀 1791·2019-08-30 14:05
閱讀 3447·2019-08-29 15:24
閱讀 2372·2019-08-29 12:44