• Redis set集合结构及命令详解


    set 无序集合

    集合的性质: 唯一性,无序性,确定性

    注: 在string和link的命令中,可以通过range 来访问string中的某几个字符或某几个元素

    但,因为集合的无序性,无法通过下标或范围来访问部分元素.

    因此想看元素,要么随机先一个,要么全选

    Redis 127.0.0.1:6379>SADD person zhangsan

    redis 127.0.0.1:6379>SADD person lisi

    redis 127.0.0.1:6379>SADD person wangwu

    redis 127.0.0.1:6379>SADD person lisi

    redis 127.0.0.1:6379>SMEMBERS person

    1) wangwu

    2) zhangsan

    3) lisi

    -----------------------------------------------

    也可以一次性设置值:

    redis 127.0.0.1:6379>SADD person zhangsan lisi wangwu lisi

    redis 127.0.0.1:6379>SMEMBERS person

    1) wangwu

    2) zhangsan

    3) lisi

    sadd key  value1 value2

    作用: 往集合key中增加元素

    srem value1 value2

    作用: 删除集合中集为 value1 value2的元素

    返回值: 忽略不存在的元素后,真正删除掉的元素的个数

    spop key

    作用: 返回并删除集合中key中1个随机元素

    随机--体现了无序性

    srandmember key

    作用: 返回集合key中,随机的1个元素.

    sismember key  value

    作用: 判断value是否在key集合中

    是返回1,否返回0

    smembers key

    作用: 返回集中中所有的元素

    scard key

    作用: 返回集合中元素的个数

    smove source dest value

    作用:把source中的value删除,并添加到dest集合中

    sinter  key1 key2 key3

    作用: 求出key1 key2 key3 三个集合中的交集,并返回

    redis 127.0.0.1:6379> sadd s1 0 2 4 6

    (integer) 4

    redis 127.0.0.1:6379> sadd s2 1 2 3 4

    (integer) 4

    redis 127.0.0.1:6379> sadd s3 4 8 9 12

    (integer) 4

    redis 127.0.0.1:6379> sinter s1 s2 s3

    1) "4"

    redis 127.0.0.1:6379> sinter s3 s1 s2

    1) "4"

    sinterstore dest key1 key2 key3

    作用: 求出key1 key2 key3 三个集合中的交集,并赋给dest

    suion key1 key2.. Keyn

    作用: 求出key1 key2 keyn的并集,并返回

    sdiff key1 key2 key3

    作用: 求出key1与key2 key3的差集

    即key1-key2-key3

    order set 有序集合

    redis有序集合和无序集合一样也是string类型元素的集合,且不允许重复的成员

    redis 127.0.0.1:6379>ZADD person 3 zhangsan

    redis 127.0.0.1:6379>ZADD person 2 lisi

    redis 127.0.0.1:6379>ZADD person 1 wangwu

    redis 127.0.0.1:6379>ZADD person 4 zhaoliu

    redis 127.0.0.1:6379>ZRANGE person 0 -1

    1) wangwu

    2) lisi

    3) zhangsan

    4) zhaoliu

    -----------------------------------------------

    也可以一次性设置值:

    redis 127.0.0.1:6379>ZADD person 3 zhangsan 2 lisi 1 wangwu 4 zhaoliu

    redis 127.0.0.1:6379>ZRANGE person 0 -1

    1) wangwu

    2) lisi

    3) zhangsan

    4) zhaoliu

    zadd key score1 value1 score2 value2 ..

    添加元素

    redis 127.0.0.1:6379> zadd stu 18 lily19 hmm 20 lilei 21 lilei

    (integer) 3

    zrem key value1 value2 ..

    作用: 删除集合中的元素

    zremrangebyscore key min max

    作用: 按照socre来删除元素,删除score在[min,max]之间的

    redis 127.0.0.1:6379> zremrangebyscorestu 4 10

    (integer) 2

    redis 127.0.0.1:6379> zrange stu 0 -1

    1) "f"

    zremrangebyrank key start end

    作用: 按排名删除元素,删除名次在[start,end]之间的

    redis 127.0.0.1:6379> zremrangebyrankstu 0 1

    (integer) 2

    redis 127.0.0.1:6379> zrange stu 0 -1

    1) "c"

    2) "e"

    3) "f"

    4) "g"

    zrank key member

    查询member的排名(升续 0名开始)

    zrevrank key memeber

    查询 member的排名(降续 0名开始)

    ZRANGE key start stop [WITHSCORES]

    把集合排序后,返回名次[start,stop]的元素

    默认是升续排列

    Withscores 是把score也打印出来

    zrevrange key start stop

    作用:把集合降序排列,取名字[start,stop]之间的元素

    zrangebyscore  key minmax [withscores] limit offset N

    作用: 集合(升续)排序后,取score在[min,max]内的元素,

    并跳过 offset个, 取出N个

    redis 127.0.0.1:6379> zadd stu 1 a 3 b 4c 9 e 12 f 15 g

    (integer) 6

    redis 127.0.0.1:6379> zrangebyscore stu3 12 limit 1 2 withscores

    1) "c"

    2) "4"

    3) "e"

    4) "9"

    zcard key

    返回元素个数

    zcount key min max

    返回[min,max] 区间内元素的数量

    zinterstore destination numkeys key1 [key2 ...]

    [WEIGHTS weight [weight ...]]

    [AGGREGATE SUM|MIN|MAX]

    求key1,key2的交集,key1,key2的权重分别是 weight1,weight2

    聚合方法用: sum|min|max

    聚合的结果,保存在dest集合内

    注意: weights,aggregate如何理解?

    答: 如果有交集, 交集元素又有socre,score怎么处理?

    Aggregate sum->score相加  , min 求最小score, max 最大score

    另: 可以通过weigth设置不同key的权重, 交集时,socre * weights

    详见下例

    redis 127.0.0.1:6379> zadd z1 2 a 3 b 4c

    (integer) 3

    redis 127.0.0.1:6379> zadd z2 2.5 a 1 b8 d

    (integer) 3

    redis 127.0.0.1:6379> zinterstore tmp 2z1 z2

    (integer) 2

    redis 127.0.0.1:6379> zrange tmp 0 -1

    1) "b"

    2) "a"

    redis 127.0.0.1:6379> zrange tmp 0 -1withscores

    1) "b"

    2) "4"

    3) "a"

    4) "4.5"

    redis 127.0.0.1:6379> zinterstore tmp 2z1 z2 aggregate sum

    (integer) 2

    redis 127.0.0.1:6379> zrange tmp 0 -1withscores

    1) "b"

    2) "4"

    3) "a"

    4) "4.5"

    redis 127.0.0.1:6379> zinterstore tmp 2z1 z2 aggregate min

    (integer) 2

    redis 127.0.0.1:6379> zrange tmp 0 -1withscores

    1) "b"

    2) "1"

    3) "a"

    4) "2"

    redis 127.0.0.1:6379> zinterstore tmp 2z1 z2 weights 1 2

    (integer) 2

    redis 127.0.0.1:6379> zrange tmp 0 -1withscores

    1) "b"

    2) "5"

    3) "a"

    4) "7"

  • 相关阅读:
    Java实现调用API识别图像中的文字并对图片重命名
    推荐大家一个人工智能领域安全信息学方向旗舰会议(EI索引),诚邀广大学子投稿!
    python随笔 1
    Neo4j
    Web项目部署到tomcat外部并配置其他端口访问和无项目名
    springboot项目
    解决找不到参数 问题,MyBatisSystemException
    置顶功能 -- 数据表格的某行数据的置顶功能 -- Demo
    Spring-Task定时任务, (springboot项目, 动态设置时间) -- Demo
    BootStrap-table表格 -- Demo
  • 原文地址:https://www.cnblogs.com/liuchuanfeng/p/6656643.html
Copyright © 2020-2023  润新知