Redis的sorted set資料結構實現僅保持一定數量的元素
實際場景
Redis的sorted set一個非常經典的使用場景做排行榜,排行榜通常僅僅需要前100,50, 20就可以了,如果將所有的資料都儲存在sorted set的key中可能會導致key中的元素非常多,那麼有沒有一種簡單的解決方案呢?其實,對於一些例如觀看量、瀏覽量累積型數量非常大的場景,其對於資料的精確度要求相對較低,這是我們可以採用逐步逐出策略。
方案描述
每次請求排行榜資料時或者定時,執行如下命令刪除一些長尾中幾乎不可能來到排行榜中的資料元素,以此來保持sorted set始終有可控資料量的元素。具體執行如下:
1. ZCARD key #首先算出總數
2. ZREMRANGEBYRANK key start end #根據總數減去保留的,適當的就可以估算出要刪除的區間start end
3. ZADD key score member #再把新的元素加進去
這三個命令組合使用,高併發引入 setnx incr 等分散式鎖命令前
相關文章
- 京東雲開發者|Redis資料結構(二)-List、Hash、Set及Sorted Set的結構實現Redis資料結構
- Redis 中的 set 和 sorted set 如何使用,原始碼實現分析Redis原始碼
- redis--概述,下載&安裝,資料結構,命令操作--string&hash,list,set&sorted set,通用命令Redis資料結構
- redis資料結構實現(一)Redis資料結構
- Redis資料結構(一)-Redis的資料儲存及String型別的實現Redis資料結構型別
- redis 簡單使用(Sorted-Set)Redis
- redis-10.sorted_set型別Redis型別
- redis 有序集合(sorted set)(redis學習七)Redis
- Redis sds資料結構實現分析ZFRedis資料結構
- redis的資料結構Redis資料結構
- sorted set 資料型別的應用場景資料型別
- python資料結構setPython資料結構
- Redis 入門指南九:Redis 有序集合(sorted set)Redis
- 資料結構--LinkedList的實現資料結構
- redis支援的資料結構Redis資料結構
- Redis中的資料結構Redis資料結構
- 探索Redis設計與實現1:Redis 的基礎資料結構概覽Redis資料結構
- Set和Map資料結構。資料結構
- js資料結構--集合(set)JS資料結構
- Redis(二)--- Redis的底層資料結構Redis資料結構
- JavaScript資料結構——圖的實現JavaScript資料結構
- Redis 中 Sorted-Set時間複雜度和實戰Redis時間複雜度
- Redis資料結構之整數集合Redis資料結構
- php基於redis的list型資料結構實現ip限流操作PHPRedis資料結構
- Redis 的五種資料結構Redis資料結構
- 【Redis 系列】redis 學習十四,sorted_set 初步探究梳理Redis
- Redis資料結構—連結串列與字典的結構Redis資料結構
- ES6 系列之模擬實現一個 Set 資料結構資料結構
- 【筆記】-《Redis實戰》- 01 Redis資料結構筆記Redis資料結構
- ES6 Set 資料結構資料結構
- Redis基礎系列-0x007:Sorted SetRedis
- Redis資料結構Redis資料結構
- Redis 資料結構Redis資料結構
- 從資料集中隨機抽取一定數量的資料隨機
- 一、【資料結構】向量(vector)的實現資料結構
- 資料結構:稀疏棋盤的實現資料結構
- 資料結構(雙向連結串列的實現)資料結構
- Redis 實戰 —— 01. Redis 資料結構簡介Redis資料結構