在 Redis 中,Sorted Set(有序集合)类型是 Set 类型的一个升级版本,在 Set 类型的基础增加了一个排序的属性。这一属性类似于分数,在添加、修改元素的时候可以指定,每次指定后有序集合会自动按新的值调整顺序。有序集合中的元素是唯一的,但是排序属性(Score)却可以重复。集合中最多可以包含 2 32 − 1 2^{32} - 1 232−1 (4294967295)个元素(每个集合可以存储超过40亿个元素)。
ZADD 命令的语法如下:
ZADD key score member [[score member] [score member] ...]
作用:ZADD 用于将一个或多个 member 和 score 添加入集合 key 中。如果 member 已存在,则更新其 score。
返回值:被成功添加的新元素的数量。
示例:
127.0.0.1:6379> ZADD letter 1 "a" # 添加新元素
(integer) 1
127.0.0.1:6379> ZADD letter 2 "b" 3 "c" # 添加多个元素
(integer) 2
127.0.0.1:6379> ZRANGE letter 0 -1 WITHSCORES # 查看集合的元素
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
使用 Redis 的内存可视化工具 Redis Desktop Manager 可以查看有序集合在 Redis 中的存储结构。
改变已知元素的score:
127.0.0.1:6379> ZADD letter 6 "a"
(integer) 0
127.0.0.1:6379> ZRANGE letter 0 -1 WITHSCORES # 查看集合的元素
1) "b"
2) "2"
3) "c"
4) "3"
5) "a"
6) "6"
ZREM 命令的语法如下:
ZREM key member [member ...]
作用:ZREM 用于删除集合 key 中的一个或多个 member。如果 member 不存在则会被忽略。
返回值:执行 ZREM 命令成功后,返回集合 key 中被成功删除的元素数量。
示例:
127.0.0.1:6379> ZADD myset 1 "a" # 添加新元素
(integer) 1
127.0.0.1:6379> ZADD myset 2 "b" 3 "c" 4 "d" # 添加多个元素
(integer) 3
127.0.0.1:6379> ZRANGE myset 0 -1 WITHSCORES
1) "a"
2) "1"
3) "b"
4) "2"
5) "c"
6) "3"
7) "d"
8) "4"
127.0.0.1:6379> ZREM myset "b" # 删除单个元素
(integer) 1
127.0.0.1:6379> ZRANGE myset 0 -1 # 查看集合的元素
1) "a"
2) "c"
3) "d"
127.0.0.1:6379> ZREM myset "a" "c" # 删除多个元素
(integer) 2
127.0.0.1:6379> ZRANGE myset 0 -1
1) "d"
127.0.0.1:6379> ZREM myset "e" # 删除不存在的元素
(integer) 0
该文章会更新,欢迎大家批评指正。
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:
服务器课程:C++服务器