这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战
hello,你好呀,我是灰小猿,一个超会写bug的程序猿!
今天我们来分享在Redis的五大数据类型中的最后一个数据类型zset类型的使用,
ZSet类型
ZSet集合与Set集合类似,也是不允许成员重复的,但是需要注意的是Set集合中的成员是无序排练的,而ZSet集合中的成员是有序排列的,
原因是ZSet集合中的每一个元素都会关联一个double类型的分数(也可以理解为权重),redis也正是通过分数来为集合中的成员进行从小到大排序的。所以有序集合的成员是虽然唯一的,但是分数(score)却是可以重复的。
向有序集合中添加一个或多个成员
通过ZADD命令,我们可以向有序集合中插入一个或多个成员,但是如果该成员已经存在的话,那么就会更新该成员所对应的分数,命令格式如下:
ZADD key score1 member1 [score2 member2...]
- key为有序集合的索引
- score为插入成员的分数,
- member为对应的成员,如果插入多个成员,则以空格分隔
如我们要想myzset集合中插入score为1,member为ztest1,score为3,member为ztest3,score为4,member为ztest4的三个成员变量
127.0.0.1:6379> ZADD myzset 1 ztest1 3 ztest3 4 ztest4
(integer) 3
获取有序集合的成员数
ZCARD命令可以获得指定有序集合的成员变量个数,格式如下:
ZCARD key
- key为有序集合的索引
如我们查询有序集合myzset中成员变量的个数
127.0.0.1:6379> ZCARD myzset
(integer) 3
计算有序集合中指定区间分数的成员数
如果我们想要查询指定区间内有多少个成员变量,那么可以使用ZCOUNT命令,格式如下:
ZCOUNT key min max
- key为要查询的有序集合的索引
- min为区间的最小值
- max为区间的最大值
如以上面的myzset的集合为例,我们要查询区间为2到4直接的成员个数,
127.0.0.1:6379> ZCOUNT myzset 2 4
(integer) 2
根据分数返回有序集合指定区间内的成员
上一个命令我们根据分数返回了指定区间内成员的个数,那么如果想要返回成员呢?我们可以使用
ZRANGEBYSCORE key min max [WITHSCORES]
- key表示查询的集合的索引
- min表示score的最小值
- max表示score的最小值
- [WITHSCORES]是可选的,表示是否带上对应的score
如我们查询有序集合myzset中分数在1到3直接的成员变量:
127.0.0.1:6379> ZRANGEBYSCORE myzset 1 3
1) "ztest1"
2) "ztest3"
127.0.0.1:6379> ZRANGEBYSCORE myzset 1 3 WITHSCORES
1) "ztest1"
2) "1"
3) "ztest3"
4) "3"
移除有序集合中的一个或多个元素
如果想要移除有序集合中的一个或多个元素,我们可以使用ZREM命令,格式如下:
ZREM key member1 [member2...]
- key为要移除成员的集合的索引
- member为要移除的成员变量,可以存在多个,但是中间要以空格分隔
如我们要移除myzset集合中的成员变量ztest4,
127.0.0.1:6379> ZREM myzset ztest4
(integer) 1
今日总结
这几篇文章都在一直和大家分享在Redis中各种数据类型的使用和常见的命令操作,虽然内容比较多,但是操作起来还是比较容易的,当然,Redis中这五种数据类型的操作命令远不止这几个,我只是列出了比较常用的几个命令,所以通过今天的文章,我希望小伙伴们都能够掌握Redis中五种数据类型的基本使用,最起码要知道如何赋值或取值, 大家之后也可以结合着这五种数据类型的特点,去查询或者联想一下他们的使用场景,
下一篇文章,我将会和大家分享Redis中的三种特殊数据类型的使用,
我是灰小猿,我们下期见!