9. Sort-set

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 \( 2^{32 – 1} \) (4294967295, 每个集合可存储40多亿个成员)。

ZADD key score member

  1. "one"
  2. "1"
  3. "uno"
  4. "1"
  5. "two"
  6. "2"
  7. "three"
  8. "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>

应用场景

  1. 带有权重的元素,LOL游戏大区最强王者
  2. 排行榜

案例

  1. "player1"
  2. "player2"
  3. "player3" 127.0.0.1:6379> ZRANGE doudizhu_rank 0 -1 withscores
  4. "player1"
  5. "-2"
  6. "player2"
  7. "-1"
  8. "player3"
  9. "3"
1) "player3"
2) "3"
3) "player2"
4) "-1"
5) "player1"
6) "-2"
127.0.0.1:6379>
下一节:Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。