📅  最后修改于: 2023-12-03 15:19:47.524000             🧑  作者: Mango
Redis 是一个高性能、基于内存、键值对存储数据库,支持多种数据结构,其中之一就是排序集(Sorted Set)。
排序集类似于集合,不同之处在于增加了一个权重参数 score,用于对集合中的元素进行排序。每个元素都唯一对应一个 value 和一个 score,可根据 score 进行排序、范围查找等操作,同时支持哈希表、集合等操作。
可以用 ZADD
命令添加元素,语法如下:
ZADD key score member [score member ...]
其中,key 为排序集的键名,score 是元素的权重参数,member 是元素的值。
示例:
127.0.0.1:6379> ZADD myset 1 "one"
(integer) 1
127.0.0.1:6379> ZADD myset 2 "two"
(integer) 1
127.0.0.1:6379> ZADD myset 3 "three"
(integer) 1
可以用 ZCARD
命令计数元素数量,语法如下:
ZCARD key
示例:
127.0.0.1:6379> ZCARD myset
(integer) 3
可以用 ZRANGE
命令指定范围查找元素,语法如下:
ZRANGE key start stop [WITHSCORES]
其中,key 为排序集的键名,start 和 stop 是元素在排序集中的位置,可用负数表示倒序位置。WITHSCORES 参数可选,表示同时返回元素的权重参数。
示例:
127.0.0.1:6379> ZRANGE myset 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> ZRANGE myset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
可以用 ZSCORE
命令计算元素得分,语法如下:
ZSCORE key member
其中,key 为排序集的键名,member 是元素的值。
示例:
127.0.0.1:6379> ZSCORE myset "one"
"1"
可以用 ZREM
命令删除元素,语法如下:
ZREM key member [member ...]
其中,key 为排序集的键名,member 是元素的值。
示例:
127.0.0.1:6379> ZREM myset "one"
(integer) 1
127.0.0.1:6379> ZCARD myset
(integer) 2
可以用 ZCOUNT
命令计数元素在指定范围内的数量,语法如下:
ZCOUNT key min max
其中,key 为排序集的键名,min 和 max 是范围限制,可以用 -inf
和 +inf
表示负无穷和正无穷。
示例:
127.0.0.1:6379> ZCOUNT myset 1 2
(integer) 2
可以用 ZINCRBY
命令增加元素的权重,语法如下:
ZINCRBY key increment member
其中,key 为排序集的键名,increment 是要增加的权重,member 是元素的值,如果元素不存在,则会添加一个新元素。
示例:
127.0.0.1:6379> ZINCRBY myset 2 "one"
"3"
127.0.0.1:6379> ZSCORE myset "one"
"3"
可以用 ZRANK
命令计算元素在排序集中的排名,语法如下:
ZRANK key member
其中,key 为排序集的键名,member 是元素的值,返回元素在排序集中的排名(从 0 开始)。
示例:
127.0.0.1:6379> ZRANK myset "two"
(integer) 1
可以用 ZRANGEBYSCORE
命令指定范围查找元素的排名,语法如下:
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
其中,key 为排序集的键名,min 和 max 是范围限制,WITHSCORES 参数可选,表示同时返回元素的权重参数,LIMIT 参数可选,表示返回指定偏移量和数量的数据。
示例:
127.0.0.1:6379> ZRANGEBYSCORE myset 2 3 WITHSCORES
1) "two"
2) "2"
3) "three"
4) "3"
127.0.0.1:6379> ZRANGEBYSCORE myset 2 3 WITHSCORES LIMIT 0 1
1) "two"
2) "2"
除此之外,还有其他常见的操作,例如元素范围删除、交集并集等,这里不再一一列举。
Redis 排序集是一种高效的排序数据结构,适用于各种需要排序的场景,如排行榜、时间轴等。学习和掌握 Redis 排序集的使用方法,可以在实际项目中提高数据操作的效率和精度。