Redis---有序集合[order set]结构以及相关命令
order set :有序集合
添加元素
结构:zadd key score1 value1 score2 value2..
- 通过score1进行排序
如 向 money中添加几组元素,每一组由余额和姓名组成
-
zadd money 100 sinmu 89 Bob 99 Sam 80 lucy
:向money中添加了这么几组元素余额剩下100元的sinmu、余额剩下89元的Bob、余额剩下99元的Sam、余额剩下80元的lucy
其默认是按照升序进行排序
查看元素
通过余额(排序的规则,以什么进行的排序)的范围查询
这里的余额的含义是一个排序规则
-
格式:
zragnebyscore key min max [withscores] limit offset N
-
比如我想要知道余额在90-100之间的用户,其语句为:
zrangebyscore money 90 100
-
当我们拿到排序的结果,但是只想拿到第二个值和第三个值的时候怎么办呢,此时就可以使用到limit。
-
拿到余额在70-100之间的到第二个和第三个用户,其语句为:
zrangebyscore money 70 100 limit 1 2
。这个语句翻译过来就是“拿到余额70-100之间的用户后,去掉第一个用户后,再取前2个用户”
通过余额来查询
-
格式:
zrange key start stop [withscores]
-
取出[start,stop]内的元素
-
比如取出money中的所有元素,其语句为:
zrange money 0 -1
-
这个
withscores
是展示排序的规则,换句话说,就是同时展示出余额和用户
查询某个元素的余额
格式:zrank key value
,通过value查询key内排序后value所处的位置
-
获取sinmu在有序结合中的位置,其语句为:
zrank money sinmu
-
倒序排列获取sinmu的位置:
zrevrank money sinmu
删除元素
通过排名进行删除
- 格式:
zrem key value
,删除集合key中的value - 需求:删除元素sinmu,其语句为:
zrem money sinmu
通过余额进行删除
- 格式:
zrembyscore key start stop
,删除集合key中score规则下的[start,stop]内的元素
需求:删除余额在70-90之间的用户,其语句为:zrembyscore money 70 90
对集合的统计
- 统计集合内元素的个数:
zcard key
- 统计集合内某一区间内的元素个数:
zcount key start stop
需求:统计grade集合内的元素个数并且查看分数在[2,5]的元素个数- 统计grade集合内的元素个数
zcard grade
- 查看分数在[2,5]的元素个数
zcount grade 2 5
- 统计grade集合内的元素个数