摘要:實現元素自動過期這里的自動過期,并沒有提供相應的,但是可以使用一下方法來實現。原則上,只應該清除掉到達過期時間的元素,未過期的元素則應該保持。
Redis sortedset實現元素自動過期
這里的自動過期,Redis并沒有提供相應的api,但是可以使用一下方法來實現。
需求背景:
給用戶返回的文章要求七日內不能重復;文章是存放在java list里邊;(這一塊就是從db將文章拿出來,然后放入list,放入java內存中)。
分析:
當用戶第一次訪問的時候,創建一個key值為userId的緩存,value為title列表(文章標題,文章唯一標識),然后給這個key值設置過期時間。
但是這樣,到過期時,整個列表都會被清掉。原則上,只應該清除掉到達過期時間的元素,未過期的元素則應該保持。這種方法不能實現預期效果。
使用redis有序集合==sorted Set== 以及對應的==ZREMRANGEBYLEX key min max==命令
移除有序集合中給定的字典區間的所有成員;
redis提供了響應的數據結構和api可以實現: ZADD key score1 member1 [score2 member2] 向有序集合添加一個或多個成員,或者更新已存在成員的分數 通過使用 ZREMRANGEBYSCORE key min max 命令刪除有序集合保存在key的最小值和最大值(含)之間的分數的所有元素。 通過定時去調用此命令,即可實現list元素自動過期;
對應相應的實現方案:
使用redis來存儲給每個用戶下發的文章,對應的key值為userId(用戶唯一標識),value為title列表加上相關聯的score。
zadd userId score title 這里的score為當前時間的時間戳; ZREMRANGEBYSCORE key 0 score 這里的score設為當前時間前7天對應的時間的時間戳;(具體時間戳可以用java Calander類計算得到) 這里可以啟動一個定時任務去定時調用這個命令即可
想要了解更多Redis 有序集合的資料。可參考以下資料:
Redis Zremrangebyscore 命令詳解
Redis 有序集合(sorted set)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67481.html
摘要:摘要本文介紹了在使用阿里云的開發規范,從鍵值設計命令使用客戶端使用相關工具等方面進行說明,通過本文的介紹可以減少使用過程帶來的問題。 摘要: 本文介紹了在使用阿里云Redis的開發規范,從鍵值設計、命令使用、客戶端使用、相關工具等方面進行說明,通過本文的介紹可以減少使用Redis過程帶來的問題。 一、鍵值設計 1. key名設計 (1)【建議】: 可讀性和可管理性 以業務名(或數據庫名...
閱讀 2995·2021-11-23 09:51
閱讀 3616·2021-10-13 09:39
閱讀 2503·2021-09-22 15:06
閱讀 887·2019-08-30 15:55
閱讀 3153·2019-08-30 15:44
閱讀 1784·2019-08-30 14:05
閱讀 3439·2019-08-29 15:24
閱讀 2369·2019-08-29 12:44