成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Redis sortedset實現(xiàn)元素自動過期

marek / 559人閱讀

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

Redis sortedset實現(xiàn)元素自動過期

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

需求背景

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

分析

一開始我的做法是這樣:

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

可實現(xiàn)方案:

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

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

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

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

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

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

zadd userId score title 這里的score為當前時間的時間戳; 

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

這里可以啟動一個定時任務(wù)去定時調(diào)用這個命令即可

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

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/67481.html

相關(guān)文章

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

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

    Jackwoo 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<