美文网首页纵横研究院数据库技术专题社区
Redis实战-Redis五种数据类型(四-5 有序集合)

Redis实战-Redis五种数据类型(四-5 有序集合)

作者: 擦普洱 | 来源:发表于2019-05-09 20:05 被阅读15次

    5.有序集合
      和三类存储着键与值之间的映射类似,有序集合也存储着成员与分值之间的映射,并且提供了分值处理命令,以及根据分值大小有序地获取或扫描成员和分值的命令。
      本节将对操作有序集合的命令进行介绍,其中包括向有序集合添加新元素的命令、更新已有元素的命令,以及对有序集合进行交集运算和并集运算的命令。

    一些常用的有序集合命令

    命令 用例和描述
    ZADD ZADD key-name score member [score member ...] --将带有给定分值的成员添加到有序集合里面
    ZREM ZREM key-name member [member ...] --有序集合里面移除给定的成员,并返回被移除成员的数量
    ZCARD ZCARD key-name --返回有序集合包含的成员数量
    ZINCRBY ZINCRBY key-name increment member --将member成员的分值加上increment
    ZCOUNT ZCOUNT key-name min max --返回分值介于min和max之间的成员数量
    ZRANK ZRANK key-name member --返回成员member在有序集合中的排名
    ZSCORE ZSCORE key-name member --返回成员member的分值
    ZRANGE ZRANGE key-name start stop [WITHSCORES] --返回有序集合中排名介于start和stop之间的成员,如果给定了可选的WITHSCORES选项,那么命令会将成员的分值也一并返回
    Redis中常用的有序集合命令
    # 将带有分值1的redis存入有序集合runoobkey中
    127.0.0.1:6379> ZADD runoobkey 1 redis
    (integer) 1
    127.0.0.1:6379> ZADD runoobkey 2 mongodb
    (integer) 1
    127.0.0.1:6379> ZADD runoobkey 3 mysql
    (integer) 1
    127.0.0.1:6379> ZADD runoobkey 3 mysql
    (integer) 0
    127.0.0.1:6379> ZADD runoobkey 4 mysql
    (integer) 0
    # 显示分值在0到10之间的成员同时显示分值
    127.0.0.1:6379> zrange runoobkey 0 10 withscores
    1) "redis"
    2) "1"
    3) "mongodb"
    4) "2"
    5) "mysql"
    6) "4"
    # 返回当前有序集合runoobkey中成员的数量
    127.0.0.1:6379> zcard runoobkey
    (integer) 3
    # 将run00bkey有序集合中的redis成员分值加2,返回的结果是当前的值
    127.0.0.1:6379> zincrby runoobkey 2 redis
    "3"
    #返回有序集合runoobkey在0到10分值之间成员的数量
    127.0.0.1:6379> zcount runoobkey 0 10
    (integer) 3
    # 返回成员在有序集合中的排名从0开始
    127.0.0.1:6379> zrank runoobkey mongodb
    (integer) 0
    127.0.0.1:6379> zrank runoobkey redis
    (integer) 1
    127.0.0.1:6379> zrank runoobkey mysql
    (integer) 2
    # 返回当前成员redis在有序集合中的分支
    127.0.0.1:6379> zscore runoobkey redis
    "3"
    # 从有序集合中删除redis成员
    127.0.0.1:6379> zrem runoobkey redis
    (integer) 1
    
    有序集合的范围型数据获取命令和范围型数据删除命令,以及并集命令和交集命令
    命令 用例和描述
    ZREVRANK ZREVRANK key-name member --返回有序集合里成员member的排名,成员按照分值由大到小排列
    ZREVRANGE ZREVRANGE key-name start stop [WITHSCORES] --返回有序集合给定排名范围内的成员,成员按照分值由大到小排列
    ZRANGEBYSCORE ZRANGEBYSCORE key min max [WITHSCORES] [limit offset count ] --返回有序集合中,分值介于min和max之间的所有成员
    ZREVRANGEBYSCORE ZREVRANGEBYSCORE key max min [WITHSCORES] [limit offset count ] --获取有序集合中分值介于min和max之间的所有成员,并按照分值由大到小的顺序范围它们
    ZREMRANGEBYRANK ZREMRANGEBYRANK key-name start stop --移除有序集合中排名从start和stop之间的所有成员
    ZREMRANGEBYSCORE ZREMRANGEBYSCORE key-name min max --移除有序集合中分值介于min和max之间的所有成员
    ZINTERSTORE ZINTERSTORE dest-key key-count key [key . . .] [WEIGHT weight [weight . . .]] [AGGREGATE SUM|MIN|MAX] --对给定的有序集合执行类似于集合的交集运算
    ZUNIONSTORE ZUNIONSTORE dest-key key-count key [key . . .] [WEIGHTS weight [weight . . .]] [AGGREGATE SUM|MIN|MAX] --对给定的有序集合执行类似于集合的并集运算

    以上的示例请参考如下链接:
    https://www.runoob.com/redis/redis-sorted-sets.html

    不怕从零开始,只怕从未启程!

    参考文献:
    菜鸟教程:https://www.runoob.com/redis/redis-keys.html
    《Redis实战》Josiah L. Carlson著

    相关文章

      网友评论

        本文标题:Redis实战-Redis五种数据类型(四-5 有序集合)

        本文链接:https://www.haomeiwen.com/subject/esyunqtx.html