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

其默认是按照升序进行排序

Redis---有序集合[order set]结构以及相关命令

查看元素

通过余额(排序的规则,以什么进行的排序)的范围查询

这里的余额的含义是一个排序规则

  • 格式:zragnebyscore key min max [withscores] limit offset N

  • 比如我想要知道余额在90-100之间的用户,其语句为:zrangebyscore money 90 100
    Redis---有序集合[order set]结构以及相关命令

  • 当我们拿到排序的结果,但是只想拿到第二个值和第三个值的时候怎么办呢,此时就可以使用到limit。

  • 拿到余额在70-100之间的到第二个和第三个用户,其语句为:zrangebyscore money 70 100 limit 1 2。这个语句翻译过来就是“拿到余额70-100之间的用户后,去掉第一个用户后,再取前2个用户”
    Redis---有序集合[order set]结构以及相关命令

通过余额来查询
  • 格式:zrange key start stop [withscores]

  • 取出[start,stop]内的元素

  • 比如取出money中的所有元素,其语句为:zrange money 0 -1
    Redis---有序集合[order set]结构以及相关命令

  • 这个withscores是展示排序的规则,换句话说,就是同时展示出余额和用户
    Redis---有序集合[order set]结构以及相关命令

查询某个元素的余额

格式:zrank key value,通过value查询key内排序后value所处的位置

  • 获取sinmu在有序结合中的位置,其语句为:zrank money sinmu
    Redis---有序集合[order set]结构以及相关命令

  • 倒序排列获取sinmu的位置:zrevrank money sinmu
    Redis---有序集合[order set]结构以及相关命令

删除元素

通过排名进行删除
  • 格式:zrem key value,删除集合key中的value
  • 需求:删除元素sinmu,其语句为:zrem money sinmu
    Redis---有序集合[order set]结构以及相关命令
通过余额进行删除
  • 格式:zrembyscore key start stop,删除集合key中score规则下的[start,stop]内的元素
    需求:删除余额在70-90之间的用户,其语句为:zrembyscore money 70 90
    Redis---有序集合[order set]结构以及相关命令

对集合的统计

  • 统计集合内元素的个数:zcard key
  • 统计集合内某一区间内的元素个数:zcount key start stop
    需求:统计grade集合内的元素个数并且查看分数在[2,5]的元素个数
    • 统计grade集合内的元素个数zcard grade
    • 查看分数在[2,5]的元素个数zcount grade 2 5
      Redis---有序集合[order set]结构以及相关命令