zoukankan      html  css  js  c++  java
  • redis_set

    集合set

    • 集合中不允许有重复元素

    • 元素是无序的,不能通过索引下标获取元素

    • 1:命令--集合内操作

      • 添加元素 sadd key element [element ...]

        127.0.0.1:6379> exists myset     #检查key是否存在
        (integer) 0
        127.0.0.1:6379> sadd myset a b c  #添加
        (integer) 3
        127.0.0.1:6379> sadd myset a b    #不能添加重复元素
        (integer) 0
        
        #O(k),k是元素的个数
        
      • 删除元素 srem key element [element ...]

        127.0.0.1:6379> srem myset a b
        (integer) 2
        127.0.0.1:6379> srem myset hello    # 删除不存在的值
        (integer) 0
        
        #O(k),k是元素的个数
        
      • 计算元素的个数 scard key

        127.0.0.1:6379> scard  myset
        (integer) 1
        
      • 判断元素是否在集合中 sismember key element

        127.0.0.1:6379> sismember myset c
        (integer) 1
        127.0.0.1:6379> smembers myset   #查看集合中所有元素
        1) "c"
        
      • 随机从集合中返回指定个数的元素,默认值是1 srandmember key [count]

        127.0.0.1:6379> smembers myset
        1) "e"
        2) "a"
        3) "c"
        4) "b"
        127.0.0.1:6379> srandmember myset    --不删除元素
        "a"
        127.0.0.1:6379> srandmember myset 3
        1) "c"
        2) "a"
        3) "b"
        127.0.0.1:6379> smembers myset
        1) "e"
        2) "a"
        3) "c"
        4) "b"
        
        #O(count)
        
      • 从集合中随机弹出元素 spop key

        127.0.0.1:6379> spop myset   --弹出了,相当于从元素中删除这个元素
        "b"
        127.0.0.1:6379> spop myset
        "e"
        127.0.0.1:6379> smembers myset   #弹出之后集合中的元素
        1) "a"
        2) "c"
        
      • 获取集合中所有的元素

      • 127.0.0.1:6379> smembers myset
        1) "a"
        2) "c"
        
        #O(n),n是元素的个数
        
    • 2集合间操作

      ​ 创建2个集合

      127.0.0.1:6379> sadd user:1:follow  it music his sports
      (integer) 4
      127.0.0.1:6379> sadd user:2:follow  it news  ent  sports
      (integer) 4
      

      • 交集 sinter key [key ..]

        127.0.0.1:6379> sinter user:1:follow user:2:follow
        1) "sports"
        2) "it"
        
        #O(m*k):m是键的个数,k是多个集合中元素最少的个数
        
      • 并集

        127.0.0.1:6379> sunion user:1:follow user:2:follow
        1) "ent"
        2) "sports"
        3) "news"
        4) "it"
        5) "his"
        6) "music"
        #O(k),k是多个集合元素的个数和
        
      • 差集

        127.0.0.1:6379> sdiff user:1:follow user:2:follow
        1) "music"
        2) "his"
        
        #O(k),k是多个集合元素的个数和
        
      • 将交集,并集,差集的结果保存到指定的集合类型中

      • sinterstore destination key [key...

      • sunionstore destination key [key...]

      • sdiffstore destination key [key...]

        127.0.0.1:6379> sinterstore user:1_2:inter  user:1:follow user:2:follow
        (integer) 2
        127.0.0.1:6379> type user:1_2:inter
        set
        127.0.0.1:6379> smembers user:1_2:inter
        1) "sports"
        2) "it"
        
  • 相关阅读:
    nginx升级总结,漏洞升级
    【BUG解决】在git上pull时提示You have not concluded your merge. (MERGE_HEAD exists)
    如何自签名把http网站变成https网站(https自签名方法)
    ifly
    Shell排序和二叉树排序
    C/C++复习笔记(2)
    C/C++复习笔记(1)
    C语言字符串操作
    python+flask
    C语言的一点复习
  • 原文地址:https://www.cnblogs.com/zhoujun007/p/13131656.html
Copyright © 2011-2022 走看看