zoukankan      html  css  js  c++  java
  • redis ZINTERSTORE详解

    command 语法:
    ZINTERSTORE destination numkeys key [key …] [WEIGHTS weight [weight …]] [AGGREGATE SUM|MIN|MAX]

    command 意义:
    ZINTERSTORE ~ 命令关键字
    destination ~指定结果集保存的集合key
    numkeys key [key …] ~ numkeys 指定有多少个集合参与交集运算, key 指定参与交集运算的集合的key
    [WEIGHTS weight [weight …]] ~ 指定参与交集运算各集合score的权重参数
    [AGGREGATE SUM|MIN|MAX] ~ 指定交集中元素的score的取值方式,例如:sum 等于各集合中该元素的score乘以权重求和
    注:
    1 默认情况下:权重皆为1 ,取值方式为 sum
    2 若指定的destination已经存在,则结果集会覆盖这个key ,无论之前这个key是什么类型,是否包含元素,使用时务必注意

    详细解释:

      Redis Zinterstore 命令计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination 。结果集中元素score为 取值方式计算各集合中该元素score乘以权重结果

    #新增一个有序集合
    127.0.0.1:6379> zadd zkey1 1 one 2 two 3 three 4 foure 5 five
    (integer) 5
    127.0.0.1:6379> zrange zkey1 0 -1 withscores
     1) "one"
     2) "1"
     3) "two"
     4) "2"
     5) "three"
     6) "3"
     7) "foure"
     8) "4"
     9) "five"
    10) "5"
    
    #新增一个有序集合
    127.0.0.1:6379> zadd zkey2 10 one 20 two 60 six 70 seven
    (integer) 4
    127.0.0.1:6379> zrange zkey2 0 -1 withscores
    1) "one"
    2) "10"
    3) "two"
    4) "20"
    5) "six"
    6) "60"
    7) "seven"
    8) "70"
    
    #取zkey1 和zkey2 2个有序集合的交集 保存至有序集合zkey3(zkey3若不存在则新建,若存在则覆盖)
    127.0.0.1:6379> zinterstore zkey3 2 zkey1 zkey2 
    (integer) 2
    127.0.0.1:6379> zrange zkey3 0 -1 withscores
    1) "one"
    2) "11"
    3) "two"
    4) "22"
    
    #取zkey1 和zkey2 2个有序集合的交集 保存至有序集合zkey3,权重配置为 10 和 1(zkey3若不存在则新建,若存在则覆盖)
    # zkey3 score = (zkey1 score)*10 + (zkey2 score)*1 
    # 例如 one score: 20 = 1*10+10*1
    127.0.0.1:6379> zinterstore zkey3 2 zkey1 zkey2 weights 10 1
    (integer) 2
    127.0.0.1:6379> zrange zkey3 0 -1 withscores
    1) "one"
    2) "20"
    3) "two"
    4) "40"
    
    # 没有指定numberkeys 
    127.0.0.1:6379> zinterstore zkey3 zkey1 zkey2 aggregate min
    (error) ERR value is not an integer or out of range
    
    #取zkey1 和zkey2 2个有序集合的交集 保存至有序集合zkey3,取值方式为min(zkey3若不存在则新建,若存在则覆盖)
    # zkey3 score = min( (zkey1 score)*1  , (zkey2 score)*1 )
    # 例如 one score:1 = min(1,10)
    127.0.0.1:6379> zinterstore zkey3 2 zkey1 zkey2 aggregate min
    (integer) 2
    127.0.0.1:6379> zrange zkey3 0 -1 withscores
    1) "one"
    2) "1"
    3) "two"
    4) "2"
    
    #测试 保存结果的key已经存在 实际覆盖这个key
    #新增一个无序集合 setkey1
    127.0.0.1:6379> sadd setkey1 1
    (integer) 1
    127.0.0.1:6379> smembers setkey1
     1) "1"
    #取zkey1 和zkey2 2个有序集合的交集 保存至无序结合setkey1中
    127.0.0.1:6379> zinterstore setkey1 2 zkey1 zkey2
    (integer) 2
    #setkey1 的类型从无序集合变为有序集合了 原有元素已经不存在了
    127.0.0.1:6379> type setkey1
    zset
    127.0.0.1:6379> smembers setkey1 
    (error) WRONGTYPE Operation against a key holding the wrong kind of value
    127.0.0.1:6379> zrange setkey1 0 -1 withscores
    1) "one"
    2) "11"
    3) "two"
    4) "22"
    127.0.0.1:6379> 
    
    
    --------------------- 
    原文:https://blog.csdn.net/qq_37586182/article/details/80240728 
  • 相关阅读:
    jq绑定on事件无效
    数字以0补全
    redis常用操作
    mysql数据操作日常
    centos端口映射
    centos7防火墙操作
    mysql5.7order by问题
    centos无法上网解决方法
    面试题
    ztree 获取子节点所有父节点的name的拼接
  • 原文地址:https://www.cnblogs.com/zxqblogrecord/p/9955155.html
Copyright © 2011-2022 走看看