有序集合——Zset
每个元素都会关联一个double类型的分数,Redis正是通过分数为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数是可以重复。
有序集合中的命令是以Z开头的。
注意: 部分图片有步骤显示
zadd
添加元素:zadd key score value
注:Key取名为zset
zrange
获取Key中一定长度范围内的值 格式:zrange key start stop
下标从0开始,结尾用-1表示。
范围是左开右闭区间。
zrangebyscore
score范围内Key中的value值按照从小到大排序数据:zrangebyscore min max
min:可以是-inf,也可以是数字
max:可以是+inf,也可以是数字
显示附带score(可选项):withscore
注意: 数字可通过(min (max 来表示开区间。只有数字表示闭区间。
zrange和zrangebyscore区别
- zrange是以长度为范围,可以理解为数组下标;zrangebyscore是以score值为范围。
- zrangebyscore的范围可以是开区间,而zrange只能是闭区间。
举例:上图
zrange是下标为2和3的数据,只有两个。
zrangebyscore是score得分为2和3的数据,可以有许多个,由zrangebyscore命令中的图,可以看出得分为2和3的有B、B1、B2和C。
注意区分!!!
zrem
删除Key中指定的元素:zrem key value
可以进行多个value删除
zcard
查看zset集合下Key中元素的个数:zcard key
zcount
指定Key根据score的值来统计给定区间的元素的个数:zcount key min max
应用场景
- 对于需要排序的场景下可以使用zset。
比如微博的实时新闻,评论等可以以发表时间作为score来存储,获取时就自动按时间来排好序。