zoukankan      html  css  js  c++  java
  • Redis数据类型:Sorted Sets操作指令

    Redis数据类型:Sorted Sets操作指令

    Sorted Sets常用操作指令

    Sorted Sets,本质是一个有序的Sets,其实在原来的Sets集合中对每一个元素新增了一个属性Score,用于排序。

    ZADD

    将指定的元素及Score添加到集合。如果集合中存在该元素,则更新其Score。 如果集合不存在,会先创建一个集合然后在添加元素及Score。

    127.0.0.1:6379> ZADD sortset 1 name
    (integer) 1
    

    ZRANGE

    返回指定下标开始到结束下标之间的元素信息,如果使用了WITHSCORES,则将元素的Score信息一起返回。

    127.0.0.1:6379> ZRANGE sortset 0 -1
    1) "name"
    127.0.0.1:6379> ZRANGE sortset 0 -1 WITHSCORES
    1) "name"
    2) "1"
    

    ZREVRANGE

    和ZRANGE类似,只是顺序是反过来的。

    127.0.0.1:6379> ZADD myset 1 one 3 three 5 five 10 ten
    (integer) 2
    127.0.0.1:6379> ZRANGE myset 0 -1 WITHSCORES
    1) "one"
    2) "1"
    3) "three"
    4) "3"
    5) "five"
    6) "5"
    7) "ten"
    8) "10"
    127.0.0.1:6379> ZREVRANGE myset 0 -1 WITHSCORES
    1) "ten"
    2) "10"
    3) "five"
    4) "5"
    5) "three"
    6) "3"
    7) "one"
    8) "1"
    

    ZCARD

    类似SCARD,返回集合中的元素个数。

    # 统计集合中的元素个数
    127.0.0.1:6379> ZCARD sortset
    (integer) 1
    

    ZSCORE

    返回指定元素的SCORE值。

    127.0.0.1:6379> ZSCORE sortset name
    "1"
    

    ZCOUNT

    统计集合中Score在MIN 和MAX的元素个数。

    127.0.0.1:6379> ZADD sset 100 beijing 80 shanghai 90 shenzhen
    (integer) 3
    127.0.0.1:6379> ZCOUNT sset 70 86
    (integer) 1
    

    ZINCRBY

    增加指定元素的SCORE值,如果指定元素不存在,则初始化该元素,并根据参数赋予该元素的SCORE值。

    # 元素存在 SOCRE值增加
    127.0.0.1:6379> ZINCRBY sset 3 beijing
    "103"
    # 元素不存在 初始化SOCRE	
    127.0.0.1:6379> ZINCRBY sset 20 newyork
    "20"
    # WITHSCORES 一定要大写
    127.0.0.1:6379> ZRANGE sset 0 -1 WITHSCORES
    1) "newyork"
    2) "20"
    3) "shanghai"
    4) "80"
    5) "shenzhen"
    6) "90"
    7) "beijing"
    8) "103"
    

    ZINTERSTORE

    返回集合间的交集并存储到指定的集合中。返回结合中的元素的CORE值是根据对比的集合自己具体元素的SCORE值的相加。

    127.0.0.1:6379> ZRANGE sset 0 -1 WITHSCORES
    1) "newyork"
    2) "20"
    3) "shanghai"
    4) "80"
    5) "shenzhen"
    6) "90"
    7) "beijing"
    8) "103"
    
    127.0.0.1:6379> ZADD sseta 100 beijing 200 nanjing 90 shenzhen
    (integer) 3
    
    127.0.0.1:6379> ZINTERSTORE ssetb 2 sset sseta
    (integer) 2
    # ZINTERSTORE 只比较元素,并相加SCORE 
    127.0.0.1:6379> ZRANGE ssetb 0 -1 WITHSCORES
    1) "shenzhen"
    2) "180"
    3) "beijing"
    4) "203"
    
    # 同时也可以加上参数WEIGHTS 作为乘法计算因子 
    127.0.0.1:6379> ZINTERSTORE ssetb 2 sset sseta WEIGHTS 2 3
    (integer) 2
    # beijing 506=103*2+100*3= 506
    # shenzhen 450=90*2+90*3=450
    127.0.0.1:6379> ZRANGE ssetb 0 -1 WITHSCORES
    1) "shenzhen"
    2) "450"
    3) "beijing"
    4) "506"
    

    ZUNIONSTORE

    ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
    

    返回集合间的并集并存储到指定的集合中。返回结合中的元素的CORE值是根据对比的集合自己具体元素的SCORE值的相加。

    numkeys:表示的是比较集合的个数。

    AGGREGATE:规则,默认是SCORE求和。

    127.0.0.1:6379> zadd set1 1 a 2 b 3 c
    (integer) 3
    127.0.0.1:6379> ZADD set2 3 c 4 d 
    (integer) 2
    #只比较元素,并相加SCORE  
    127.0.0.1:6379> ZUNIONSTORE set3 2  set1 set2
    (integer) 4
    #同时也可以加上参数WEIGHTS 作为乘法因子  默认为1
    #C元素的SCORE为6=3*1+3*1=6
    127.0.0.1:6379> ZRANGE set3 0 -1 WITHSCORES
    1) "a"
    2) "1"
    3) "b"
    4) "2"
    5) "d"
    6) "4"
    7) "c"
    8) "6"
    

    ZRANK

    返回集合中元素的排序位置。SOCRE是从小大升序排队。

    127.0.0.1:6379> ZRANGE ssetb 0 -1 WITHSCORES
    1) "shenzhen"
    2) "450"
    3) "beijing"
    4) "506"
    # 集合不存在 则返回nil
    127.0.0.1:6379> ZRANK setb beijing
    (nil)
    # 升序排序 下标从0开始
    127.0.0.1:6379> ZRANK ssetb beijing
    (integer) 1
    127.0.0.1:6379> ZRANK ssetb shenzhen
    (integer) 0
    
    

    ZREM

    从集合中删除指定元素。删除成功返回元素个数,元素不存在时返回0。

    127.0.0.1:6379> ZREM ssetb beijing
    (integer) 1
    127.0.0.1:6379> ZREM ssetb beijing2
    (integer) 0
    

    ZPOOMAX ZPOPMIN

    ​ 弹出元素中SCORE值最大或最小的元素及SCORE.。

    127.0.0.1:6379> ZADD myset 1 one 3 three 5 five 10 ten 
    (integer) 4
    # Count 表示一次弹出元素的个数。
    127.0.0.1:6379> ZPOPMAX myset 1
    1) "ten"
    2) "10"
    127.0.0.1:6379> ZPOPMin myset 1
    1) "one"
    2) "1"
    

    ZSCAN

    迭代集合中的元素,可以参考上一篇中的SCAN。

    以上就是Redis中Scored Sets的常用操作指令了,更多其他指令可以参考官网,Redis官网,谢谢阅读,希望对你有所帮助。

  • 相关阅读:
    一款纯css3实现的响应式导航
    一款基于TweenMax.js的网页幻灯片
    4款基于jquery的列表图标动画切换特效
    随着鼠标移动的文字阴影
    一款纯css实现的垂直时间线效果
    一款基于jquery的侧边栏导航
    (转) 共享个很棒的vim配置
    [Leetcode] String to Integer (atoi)
    dia无法输入中文?
    [Leetcode] Sum Root to Leaf Numbers
  • 原文地址:https://www.cnblogs.com/enjoyitlife/p/11951937.html
Copyright © 2011-2022 走看看