**Redis數據類型:zset(sorted set )**
zset是Redis中最具有特色的數據結構(跳躍列表),首先它有set不可重復的特性,在這個基礎上,還可以給value賦予一個排序權重score,所謂的有序其實就是根據這個得分來排序。排序的set,可以去重還可以排序,寫進去的時候給一個分數,自動根據根據分數排序,分數可以自定義排序規則。
Redis 有序集合zset和集合set一樣也是String類型元素的集合,且不允許重復的成員。不同的是 zset 的每個元素都會關聯一個分數(分數可以重復),redis 通過分數來為集合中的成員進行從小到大的排序。Redis的zset天生是用來做排行榜的,榜單,總榜,熱榜。
**1.1、排行榜**
用戶發布了n篇文章,其他人看到文章后給喜歡的文章點贊,使用score來記錄點贊數,有序集合會根據score排行。流程如下:
用戶發布一篇文章a,初始點贊數為0,即score為0
```bash
zadd?user:article?0?a
```
有人給文章a點贊,遞增1
```bash
zincrby user:article 1 a
```
查詢點贊前三篇文章
```bash
zrevrangebyscore user:article 0 2
```
查詢點贊后三篇文章
```bash
zrangebyscore?user:article?0?2
```
**1.2、實時排名**
與排行榜類似,但每個元素的分數隨時會變化。可以將用戶的 ID 和分數存儲在 Redis 的 Zset 類型中,然后通過 ZINCRBY 命令更新用戶的分數,通過 ZRANK 命令獲取用戶的排名,從而實現實時排名的功能。
**1.3、時間序列**
可以將事件的時間戳和內容以鍵值對的形式存儲在 Redis 的 Zset 類型中,然后可以通過 ZADD 命令將事件添加到有序集合中,通過 ZRANGEBYSCORE 命令獲取指定時間范圍內的事件,從而實現時間序列的功能。
- Redis介紹
- String類型的應用場景
- Hash類型的應用場景
- List類型應用場景
- Set類型應用場景
- Zset類型應用場景
- Redis官網
- 安裝Redis
- Redis配置文件詳解
- 配置Redis開機啟動
- Redis的命令行工具
- Redis的可視化管理軟件
- 各開發語言對應的Redis庫
- Server管理命令
- 通用命令
- String類型命令
- HASH類型命令
- LIST類型命令
- Set類型命令
- Sorted_Set類型命令
- ThinkPHP集成Redis
- SpringBoot集成Redis
- 實戰篇:優惠券功能概述
- 實戰篇:表單頁面實現
- 實戰篇:后端處理邏輯
- 實戰篇:優惠券類邏輯
- 實戰篇:優惠券列表
- 原理篇:Redis緩存雪崩
- 原理篇:Redis緩存擊穿
- 原理篇:Redis緩存穿透
- 進階篇:Redis的事務與持久化
- 進階篇:Redis集群
- 進階篇:Redis的發布訂閱模式
- 進階篇:Redis分布式鎖
- 進階篇:Redis分布式緩存
- 進階篇:一致性哈希
- 進階篇:Redis安全管理
- 進階篇:Redis性能優化