Redis 資料結構之有序集合(sort set)

2021-08-14 15:29:15 字數 3448 閱讀 8235

有序集合

sortset的元素包括

score(分數,int/float) ,value(成員,string/int/float) ,rank等三個屬性,

(1)實際上是score 和 value的對映;

(2)value 在有序集合中必須是唯一的,score可以重複;

(3)rank 從0 開始,score越大,rank值越大,相同分數,value中的字母在字典中越後,rank值越大;

127.0.0.1:6379>

127.0.0.1:6379> get new:counter

"1"127.0.0.1:6379> incr new:counter

(integer) 2

127.0.0.1:6379> zadd sort-set:2 99 zhangsan

(integer) 1

127.0.0.1:6379> zadd sort-set:2 92.5 lisi

(integer) 1

127.0.0.1:6379> zadd sort-set:2 97.50 wangwu

(integer) 1

zrange 按照字典字母表順序取出所有元素的value

127.0.0.1:6379> zrange sort-set:2 0 -1

1) "lisi"

2) "wangwu"

3) "zhangsan"

withscores 關鍵字返回元素的score值

127.0.0.1:6379> zrange sort-set:2 0 -1 withscores

1) "lisi"

2) "92.5"

3) "wangwu"

4) "97.5"

5) "zhangsan"

6) "99"

zrevrange 按照字典字母表倒序順序取出所有元素的value

127.0.0.1:6379> zrevrange sort-set:2 0 -1 withscores

1) "zhangsan"

2) "99"

3) "wangwu"

4) "97.5"

5) "lisi"

6) "92.5"

zcard 返回有序集合size

127.0.0.1:6379> zcard sort-set:2

(integer) 3

zrank 返回集合中當前元素的rank屬性(rank值)

127.0.0.1:6379> zrank sort-set:2 wangwu

(integer) 1

zrangebylex以字典順序獲取集合中元素的value,類似的還有 zrevrangebylex, zlexcount命令

127.0.0.1:6379> zadd sort-set:2 92.5 zhuliu 90 qianqi

(integer) 2

127.0.0.1:6379> zrange sort-set:2 0 -1

1) "qianqi"

2) "lisi"

3) "zhuliu"

4) "wangwu"

5) "zhangsan"

127.0.0.1:6379> zrange sort-set:2 0 -1 withscores

1) "qianqi"

2) "90"

3) "lisi"

4) "92.5"

5) "zhuliu"

6) "92.5"

7) "wangwu"

8) "97.5"

9) "zhangsan"

10) "99"

當元素的value值重複時,zadd 只修改該元素的value值,不新增元素

127.0.0.1:6379> zadd sort-set:2 95 qianqi

(integer) 0

127.0.0.1:6379> zrange sort-set:2 0 -1 withscores

1) "lisi"

2) "92.5"

3) "zhuliu"

4) "92.5"

5) "qianqi"

6) "95"

7) "wangwu"

8) "97.5"

9) "zhangsan"

10) "99"

127.0.0.1:6379> zrevrange sort-set:2 0 -1 withscores

1) "zhangsan"

2) "99"

3) "wangwu"

4) "97.5"

5) "qianqi"

6) "95"

7) "zhuliu"

8) "92.5"

9) "lisi"

10) "92.5"

-表示負無窮,+表示正無窮

127.0.0.1:6379> zrangebylex sort-set:2 - +

1) "lisi"

2) "zhuliu"

3) "qianqi"

4) "wangwu"

5) "zhangsan"

127.0.0.1:6379> zadd sort-set:2 92.5 qianqi

(integer) 0

127.0.0.1:6379> zrangebylex sort-set:2 - +

1) "lisi"

2) "qianqi"

3) "zhuliu"

4) "wangwu"

5) "zhangsan"

字元前的

(表示排除該字串的值,

[表示包含該字串的值

127.0.0.1:6379> zrangebylex sort-set:2 (l [q

1) "lisi"

127.0.0.1:6379> zrangebylex sort-set:2 (l (q

1) "lisi"

127.0.0.1:6379> zrangebylex sort-set:2 (l [z

1) "lisi"

2) "qianqi"

127.0.0.1:6379> zrangebylex sort-set:2 (l (z

1) "lisi"

2) "qianqi"

127.0.0.1:6379> zrangebylex sort-set:2 (lisi (z

1) "qianqi"

127.0.0.1:6379> zrangebylex sort-set:2 (lisi [zhangsan

1) "qianqi"

127.0.0.1:6379> zrangebylex sort-set:2 (lisi [zhuliu

1) "qianqi"

2) "zhuliu"

3) "wangwu"

4) "zhangsan"

redis資料結構之有序集合

有序集合與集合大致差不多,不同的是有序集合中的元素可以排序,但與列表使用下標實現排序不一樣,有序集合利用分數作為依據排序。有序集合不能重複,但分數可以重複。對部落格 發布的文章做排行榜,榜單的維度可能是按時間 按照獲得讚數。比如使用讚數對使用者每天發布文章的排行榜,並實現以下功能 1 新增使用者讚數...

Redis資料結構之有序集合sortedset

有序集合 sorted set 用於儲存多個字串元素,它是在集合 set 的基礎上給每個元素增加了乙個用於排序的字段 score 元素同樣不可重複,可以根據分數索引獲取元素,此外,提供了根據score獲取指定範圍以及排序功能 zadd 新增資料,返回元素個數 zadd key score1 memb...

Redis資料型別之有序集合

k ey key key 有序集合是有序的,去重的容器資料結構 值只能為字串,最多232 12 1 232 1這裡每個元素對應乙個分數,並按照分數從小到大排序 1.新增元素,檢視元素 新增元素時,在前面加乙個分數 zadd z1 1 a 3 b 2 c 檢視所有元素,正向分值從小到大 zrange ...