Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 \( 2^{32 – 1} \) (4294967295, 每个集合可存储40多亿个成员)。
ZADD key score member
- "one"
- "1"
- "uno"
- "1"
- "two"
- "2"
- "three"
- "3" redis>
#### ZCOUNT key min max
* 返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZCOUNT myzset -inf +inf
(integer) 3
redis> ZCOUNT myzset (1 3
(integer) 2
redis>
#### ZINCRBY key increment member
1) "two"
2) "2"
3) "one"
4) "3"
redis>
应用场景
- 带有权重的元素,LOL游戏大区最强王者
- 排行榜
案例
- "player1"
- "player2"
- "player3" 127.0.0.1:6379> ZRANGE doudizhu_rank 0 -1 withscores
- "player1"
- "-2"
- "player2"
- "-1"
- "player3"
- "3"
1) "player3"
2) "3"
3) "player2"
4) "-1"
5) "player1"
6) "-2"
127.0.0.1:6379>
下一节:Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。