zoukankan      html  css  js  c++  java
  • Redis的数据结构之Set

    存储Set

     和List类型不同的是,Set集合中不允许出现重复的元素

     Set可包含的最大元素数量是4294967295

    存储set常用命令:

    添加/删除元素

    获取集合中的元素

    集合中的差集运算

    集合中的交集运算

    集合中的并集元算

    扩展命令

     

    sadd key member [member ...]

    添加set元素

    127.0.0.1:6379> sadd set1  a b c

    (integer) 3

    添加三个元素

    smembers key

    查看指定key集合元素

    127.0.0.1:6379> smembers set1

    1) "c"

    2) "b"

    3) "a"

     

    127.0.0.1:6379> sadd set1 a d e

    (integer) 2

    127.0.0.1:6379> smembers set1

    1) "c"

    2) "d"

    3) "b"

    4) "a"

    5) "e"

    继续添加元素 发现 重复元素不再添加

     

    srem key member [member ...]

    删除元素

    127.0.0.1:6379> srem set1 a d

    (integer) 2

    127.0.0.1:6379> smembers set1

    1) "b"

    2) "c"

    3) "e"

    删除两个元素

     

    sismember key member

    判断某个元素是否存在 返回1 表示存在 返回0表示不存在

    127.0.0.1:6379> sismember set1 a

    (integer) 0

    127.0.0.1:6379> sismember set1 b

    (integer) 1

     

    sdiff计算差集

    127.0.0.1:6379> sadd set2 a b c

    (integer) 3

    127.0.0.1:6379> sadd set3 b c d e

    (integer) 4

    127.0.0.1:6379> sdiff set2 set3

    1) "a"

    127.0.0.1:6379> sdiff set3 set2

    1) "d"

    2) "e"

    我们发现 集合的顺序不同 结果不一样 根据前者参考

     

    sinter计算交集

    127.0.0.1:6379> sinter set2 set3

    1) "c"

    2) "b"

     

    sunion计算并集

    127.0.0.1:6379> sunion set2 set3

    1) "e"

    2) "a"

    3) "b"

    4) "c"

    5) "d"

     

    scard计算元素总数

    127.0.0.1:6379> smembers set1

    1) "b"

    2) "c"

    3) "e"

    127.0.0.1:6379> scard set1

    (integer) 3

     

    srandmember 随机取一个元素

    127.0.0.1:6379> srandmember set1

    "c"

    127.0.0.1:6379> srandmember set1

    "e"

     

    sdiffstore 把差集结果存储到新集合中

    127.0.0.1:6379> smembers set2

    1) "c"

    2) "b"

    3) "a"

    127.0.0.1:6379> smembers set3

    1) "c"

    2) "e"

    3) "d"

    4) "b"

    127.0.0.1:6379> sdiffstore r1 set2 set3

    (integer) 1

    127.0.0.1:6379> smembers r1

    1) "a"

     

    sinterstore 把交集结果存储到新集合中

    127.0.0.1:6379> sinterstore r2 set2 set3

    (integer) 2

    127.0.0.1:6379> smembers r2

    1) "c"

    2) "b"

     

    sunionstore把并集结果存储到新集合中

    127.0.0.1:6379> sunionstore r3 set2 set3

    (integer) 5

    127.0.0.1:6379> smembers r3

    1) "e"

    2) "a"

    3) "b"

    4) "c"

    5) "d"

     

    存储Set使用场景

     跟踪一些唯一性数据

     用于维护数据对象之间的关联关系

  • 相关阅读:
    BZOJ 1854: [Scoi2010]游戏( 二分图最大匹配 )
    BZOJ 2038: [2009国家集训队]小Z的袜子(hose) ( 莫队 )
    BZOJ 3555: [Ctsc2014]企鹅QQ( hash )
    BZOJ 2226: [Spoj 5971] LCMSum( 数论 )
    BZOJ 3505: [Cqoi2014]数三角形( 组合数 )
    BZOJ 2510: 弱题( 矩阵快速幂 )
    BZOJ 1009: [HNOI2008]GT考试( dp + 矩阵快速幂 + kmp )
    BZOJ 1090: [SCOI2003]字符串折叠( 区间dp )
    HDU 2295 Radar dancing links 重复覆盖
    ZOJ 3209 Treasure Map dancing links
  • 原文地址:https://www.cnblogs.com/wqsbk/p/8571799.html
Copyright © 2011-2022 走看看