Redis教程

有序集合(sorted set)

Preview
  • Redis的数据结构有序集合
  • 基本命令
  • 1. ZADD
  • 2. ZSCORE
  • 3. ZRANK
  • 4. ZREVRANK
  • 5. ZRANGE
  • 6. ZREVRANGE
  • 7. ZCOUNT
  • 8. ZREM
  • 9. ZCARD
  • 应用场景

Redis的数据结构有序集合

Redis是一种基于内存的NoSQL数据库,支持多种数据结构,其中之一就是有序集合。有序集合支持对每个元素关联一个分数,可以根据分数对元素进行排序,提供了一种高效的去重方案。

基本命令

1. ZADD

在有序集合中添加一个或多个带有分数的元素,如果元素已经存在,更新元素的分数值。

ZADD key score member [score member ...]

score表示元素的分数,member表示元素的值,可以添加一个或多个分数成员对。

示例:

ZADD myset 1 first
ZADD myset 2 second
ZADD myset 3 third 4 fourth

2. ZSCORE

返回有序集合中指定元素的分数。

ZSCORE key member

示例:

ZSCORE myset first

返回值为1。

3. ZRANK

返回有序集合中指定元素的排名,按照分数从小到大排序。

ZRANK key member

示例:

ZRANK myset third

返回值为2,因为third在有序集合中排名第2。

4. ZREVRANK

返回有序集合中指定元素的排名,按照分数从大到小排序。

ZREVRANK key member

示例:

ZREVRANK myset third

返回值为1,因为third在有序集合中排名第1。

5. ZRANGE

返回有序集合中指定排名范围的元素,按照分数从小到大排序。

ZRANGE key start stop [withscores]

start和stop参数表示排名的起始和结束位置,withscores表示是否返回元素的分数。下标从0开始,-1表示最后一个元素。

示例:

ZRANGE myset 0 2 withscores

返回值为:

1) "first"
2) "1"
3) "second"
4) "2"
5) "third"
6) "3"

6. ZREVRANGE

返回有序集合中指定排名范围的元素,按照分数从大到小排序。

ZREVRANGE key start stop [withscores]

示例:

ZREVRANGE myset 0 2 withscores

返回值为:

1) "third"
2) "3"
3) "fourth"
4) "4"
5) "second"
6) "2"

7. ZCOUNT

返回有序集合中指定分数范围内的元素数量。

ZCOUNT key min max

min和max参数为分数范围,闭区间。

示例:

ZCOUNT myset 2 3

返回值为 2,因为有两个元素的分数在2和3之间。

8. ZREM

从有序集合中删除一个或多个元素。

ZREM key member [member ...]

示例:

ZREM myset third fourth

9. ZCARD

返回有序集合的元素数量。

ZCARD key

示例:

ZCARD myset

返回值为2,因为有序集合中只剩下first和second两个元素。

应用场景

有序集合在Redis中被广泛应用,以下是一些常见的应用场景:

  1. 排行榜:将用户的分数作为分数成员插入到有序集合中,可以方便地根据用户的分数进行排序和查询。

  2. 社交网络:将用户的好友关系作为元素插入到有序集合中,可以很快地查询一个用户的好友数量和好友的排名。

  3. 任务队列:将所有任务的优先级作为分数成员插入到有序集合中,工作者从有序集合中取出优先级最高的任务进行处理。

  4. 防作弊系统:将用户的行为(如点赞、评论)作为元素插入到有序集合中,可以很快地查询一个用户的行为数量和排名,也可以检查重复行为。