Redis数据结构-有序集合

226 阅读4分钟
简介
  • 按照元素的分值来有序地存储各不相同的元素
  • 有序集合和集合一样,都可以包含任意数量的、各不相同的元素( element),不同于集合的是,有序集合的每个元素都关联着一个浮点数格式的分值(score),并且有序集合会按照分值,以从小到大的顺序来排列有序集合中的各个元素
  • 虽然有序集合中的每个元素都必须是各不相同的,但元素的分值并没有这一限制,换句话来说,两个不同元素的分值可以是相同的
基本操作
  • ZADD key score element [[score element] [score element] ...] 按照给定的分值和元素,将任意数量的元素添加到有序集合里面,命令的返回值为成功添加的元素数量

    127.0.0.1:6379> zadd price 3 香蕉  2 西瓜  8 苹果 6 猕猴桃 20 榴莲  25 猪肉
    6
    
  • ZREM key element [element ...] 从有序集合中删除指定的元素,以及这些元素关联的分值,命令返回被成功删除的元素数量

    127.0.0.1:6379> zrem price 猪肉
    1
    
  • ZSCORE key element 返回有序集合中,指定元素的分值

    127.0.0.1:6379> zscore price 西瓜
    "2"
    
  • ZINCRBY key increment element 为有序集合指定元素的分值加上增量 increment ,命令返回执行操作之后,元素的分值

    127.0.0.1:6379> zincrby price -0.5 西瓜
    "1.5"
    
  • ZCARD key 返回有序集合包含的元素数量

    127.0.0.1:6379> zcard price
    5
    
  • ZRANK key element 返回指定元素在有序集合中的排名,其中排名按照元素的分值从小到大计算

    127.0.0.1:6379> zrank price 西瓜
    0
    
  • ZREVRANK key member 返回成员在有序集合中的逆序排名,其中 排名按照元素的分值从大到小计算

    127.0.0.1:6379> zrevrank price 西瓜
    4
    
分值范围操作
  • ZRANGE key start stop [WITHSCORES] 返回有序集合在按照分值从小到大排列元素(升序排列)的情况下,索引start 至索引stop 范围之内的所有元素 两个索引都可以是正数或者负数。当给定 WITHSCORES选项时,命令会将元素和分值一并返回

    127.0.0.1:6379> zrange price 3 50
    苹果
    榴莲
    127.0.0.1:6379> zrange price 3 50 withscores
    苹果
    8
    榴莲
    20
    
  • ZREVRANGE key start stop [WITHSCORES] 返回有序集合在按照分值从大到小排列元素(降序排列) 的情况下,索引 start 至索引 stop 范围之内的所有元素 两个索引都可以是正数或者负数。当给定 WITHSCORES 选项时,命令会把元素和分值一并返回

    127.0.0.1:6379> zrevrange price  3 50 
    香蕉
    西瓜
    127.0.0.1:6379> zrevrange price  3 50 withscores
    香蕉
    3
    西瓜
    1.5
    
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 返回有序集合在按照分值升序排列元素的情况下,分值在 min 和 max 范围之内的所有元素 给定 WITHSCORES 选项时,元素和分值会一并返回。给定 LIMIT 选项时,可以通过 offset 参数指定返回的结果集要跳过多少个元素,而 count 参数则用于指定返回的元素数量

  • ZREVRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 返回有序集合在按照分值降序排列元素的情况下,分值在 min 和 max 范围之内的所有元素。 给定 WITHSCORES 选项时,元素和分值会一并返回。给定 LIMIT 选项,可以通过 offset 参数指定返回的结果集要跳过多少个元素,而 count 参数则用于指定返回的元素数量

  • ZCOUNT key min max 返回有序集合在升序排列元素的情况下,分值在 min 和 max 范围内的元素数量

    127.0.0.1:6379> zcount price 1 30
    5
    
  • ZREMRANGEBYRANK key start stop 移除有序集合中,元素按升序进行排列的情况下,指定排名范围内的所有元素

  • ZREMRANGEBYSCORE key min max 移除有序集合中,分值范围介于min和max之内的所有元素

集合运算操作
  • ZUNIONSTORE destkey numkeys key [key ...] 计算并集,计算结果会被存储到destkey中,命令返回结果集的基数

  • ZINTERSTORE destkey numkeys key [key ...] 计算交集,计算结果会被存储到destkey中,命令返回结果集的基数

    如果参与并集计算的集合比较多,那么Redis服务器可能会被阻塞