轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/79289352
本文出自【趙彥軍的博客】
sorted set
redis
有序集合(sorted set
),redis
有序集合和集合一樣也是string類型元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯一個double
類型的分數。redis
正是通過分數來爲集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(score
)卻可以重複。
使用場景:
- 微博熱點話題
- 遊戲分數、積分排名榜
添加元素
- zadd :添加元素到有序列表
格式:zadd 【scorekey】【score key】【score key】【..】
例子:添加3
個元素到集合,a 70 分
;b 80 分
;c 90 分
zadd score1 70 a 80 b 90 c
獲取元素
zscore
:獲取key
的score
值
格式:zscore【scorekey】【key】
例子:獲取 a
的 score
值
zscore score1 a
zrange
: 獲取集合元素
格式:zrange 【scorekey】【start】【end】
start: 元素開始的索引,一般從 0 開始
end: 元素結束的索引,-1 代表倒數第一個元素,也就是最後一個元素。
例子:獲取 score1
集合所有的元素。
zrange score1 0 -1
上面只是獲取元素的 key 值,如果要 key 和 score 一起獲取,需要加上 withscores
命令
//默認從小到大排序
zrange score1 0 -1 withscores
//從大到小排序
zrevrange score1 0 -1 withscores
zrangebyscore
: 根據分數範圍獲取集合元素
格式:zrangebyscore 【scorekey】【start】【end】
start: 開始分數
end: 結束分數
例子:獲取 score1
集合分數在 10–30 之間的元素
zrangebyscore score1 10 30
擴展命令
//查找 score1 集合中分數在 10--200 之間的元素,在這些元素中,只取索引爲 1 的元素往後數兩個
zrangebyscore score1 10 200 withscores limit 1 2
格式:zrangebyscore key min max [withscore] [LIMIT offset count]
刪除元素
- del :獲取集合
格式:del 【scorekey】
- zrem :刪除元素
格式:zrem 【scorekey】【key key key …】
例子:刪除 a , b 的值
zrem score1 a b
- zremrangebyrank :按照元素順序刪除元素
格式:zremrangebyrank 【scorekey】【start】【end】
start : 元素開始的索引
end: 元素結束的索引
例子:刪除 score1 集合前 3 個元素
zremrangebyrank score1 0 2
- zremrangebyscore :按照分數的範圍刪除元素
格式:zremrangebyscore 【scorekey】【start】【end】
start : 開始的分數
end: 結束的分數
例子:刪除 score1 集合中 分數在 70--90
的元素
zremrangebyscore score1 70 90
其他命令
- zcard :獲取集合長度
格式:zcard 【scorekey】
例子:獲取 score1 集合
的長度
zcard score1
- zincrby :給元素增加值
格式:zincrby 【scorekey】【score】【key】
例子: 給 d 元素值增加 14
zincrby score1 14 d
- zcount :計算指定分數範圍內元素的個數
格式:zcount 【scorekey】【startscore】【endscore】
startscore : 開始的分數
endscore: 結束的分數
例子: 計算分數在 50 到 100 之間的元素的個數
zcount score1 50 100
個人微信號:zhaoyanjun125 , 歡迎關注