• 中文
    • English
  • 注册
  • 查看作者
  • 6-4 08-Redis的数据结构之set

    一. Set

    set特点:

    • set是没有排序字符集合

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

    • 多个since之间的聚合、计算操作都是在服务端中进行的,能够极大节省网络开销

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

    set使用场景:

    • set可以用于跟踪一些具有唯一性数据,比如每个用于的访问博客的ip地址就可以用Redis的set存储

    • 维护数据对象之间的关联关系,比如购买了a商品的用户ID都存入到一个set中,购买了b商品的用户ID都存入另一个商品中,如果需要查看同时购买了这两个商品的用户,只需要做交集运算就可以了

    二. Set命令

    set常用命令如下:

    • sadd:添加元素,注意,set集合的元素不允许重复

    jia:0>sadd jia a b c
    "3"
    
    jia:0>sadd jia a
    "0"
    • srem:删除元素

    jia:0>srem jia c
    "1"
    • smembers:获得集合中的元素

    jia:0>smembers jia
     1)  "a"
     2)  "b"
    • sismember:可以在集合后面添加元素名来判断该元素是否在该集合中,0代表不存在,1代表存在

    jia:0>sismember jia c
    "0"
    
    jia:0>sismember jia a
    "1"
    • sdiff:集合中的差集运算

    jia:0>sadd jia1 a b c
    "3"
    
    jia:0>sadd jia2 a c d e
    "4"
    
    jia:0>sdiff jia1 jia2
     1)  "b"
    • sinter:集合中的交集运算

    jia:0>sinter jia1 jia2
     1)  "a"
     2)  "c"
    • sunion:集合中的并集运算

    jia:0>sunion jia1 jia2
     1)  "e"
     2)  "c"
     3)  "b"
     4)  "a"
     5)  "d"
    • scard:集合中元素数量

    jia:0>scard jia1
    "3"
    • srandmember:随机返回集合中的元素:

    jia:0>srandmember jia2
    "d"
    
    jia:0>srandmember jia2
    "a"
    • sdiffstore:将两个集合的差集存储在新的集合上

    jia:0>sdiffstore jia3 jia1 jia2
    "1"
    
    jia:0>smembers jia3
     1)  "b"
    • sinterstore:将两个集合的交集存储在新的集合上

    jia:0>sinterstore jia4 jia1 jia2
    "2"
    
    jia:0>smembers jia4
     1)  "a"
     2)  "c"
    • sunionstore:将两个集合的并集存储在新的集合上

    jia:0>sunionstore jia5 jia1 jia2
    "5"
    
    jia:0>smembers jia5
     1)  "e"
     2)  "c"
     3)  "b"
     4)  "a"
     5)  "d"

    三. 总结

    set常用命令如下:

    • sadd:添加元素:

    • srem:删除元素

    • smembers:获得集合中的元素

    • sismember:可以在集合后面添加元素名来判断该元素是否在该集合中

    • sdiff:集合中的差集运算

    • sinter:集合中的交集运算

    • sunion:集合中的并集运算

    • scard:集合中元素数量

    • srandmember:随机返回集合中的元素:

    • sdiffstore:将两个集合的差集存储在新的集合上

    • sinterstore:将两个集合的交集存储在新的集合上

    • sunionstore:将两个集合的并集存储在新的集合上

    山东·日照
  • 0
  • 0
  • 0
  • 1k
  • zjmarina

    请登录之后再进行评论

    登录
    单栏布局 侧栏位置: