Redis 系列02--Redis 数据类型--Set

本文详细介绍了Redis Set数据类型,包括sadd、smembers、scard、sdiff、sdiffstore、sinter、sinterstore、sunion、sunionstore、sismember、smove、spop、srandmember和srem等命令的使用及其应用场景。还探讨了如何创建、操作和理解集合,以及集合间的基本运算。
摘要由CSDN通过智能技术生成

上一篇:Redis 系列02--Redis 数据类型--List_fengxianaa的博客-CSDN博客

Redis 的 Set 是 字符串 类型的无序集合。不能出现重复的数据。

集合中最大的成员数为 2的32次方 - 1 (4294967295, 每个集合可存储40多亿个成员)。

  • sadd:将一个或多个成员元素加入到set中,如果set不存在,会自动创建,返回添加成功的元素数量
    • 下图,创建一个fengxiansheng的set,并添加3个元素,返回结果是3
    • 如果添加的元素在set中存在,返回0
    • 当 key 不是集合类型时,返回一个错误
  • smembers:返回集合中的所有的成员
    • 不存在的集合 key 被视为空集合
  • scard:返回集合中元素的数量
    • 当 key 不存在时,返回 0
  • sdiff:返回第一个集合与其他集合之间的差异,其实就是第一个集合中独有的元素
    • 如果指定的 key 不存在的,将视为空集
      • 下图,fengxiansheng2 这个集合不存在,所以返回fengxiansheng集合中的所有元素
  • sdiffstore:将给定集合之间的差集,存储在一个集合中
    • 下图,将集合之间的差集,存储到名为 test 的集合中
    • 如果指定的集合 key 已存在,会覆盖
      • 下图,test 本来是一个 string 类型,因为把两个集合的差集放到了test中,所以它变成一个集合
  • sinter:返回给定所有给定集合的交集
    • 不存在的集合 key 被视为空集。 当给定集合当中有一个空集时,结果也为空集
      • 下图,fengxiansheng100 这个集合是不存在的,所以返回空集
  • sinterstore:将给定集合之间的交集存储在指定的集合中
    • 下图,将集合之间的差集,存储到名为 test 的集合中
    • 如果指定的集合已经存在,则将其覆盖
      • 下图,test 本来是一个 string 类型,因为把两个集合的交集放到了test中,所以它变成一个集合
  • sunion:返回给定集合的并集
  • sunionstore:将给定集合的并集存储在指定的集合 destination 中。如果 destination 已经存在,则将其覆盖。
  • sismember:判断元素是否是集合的成员,是:返回1,不是:返回0
  • smove:将指定元素从 source 集合移动到 destination 集合,成功返回 1
    • 下图,把 test1 这个元素,从 fengxiansheng 移动到 fengxiansheng1 之中
      • 如果 source 集合不存在或不包含指定的元素,则 SMOVE 命令不执行任何操作,仅返回 0
      • 下图,fengxiansheng100 这个集合不存在,所以 SMOVE 无效,返回0
      • 下图,test100 在 fengxiansheng 这个集合中不存在,所以 SMOVE 无效,返回0
    • 当 destination 集合已经包含这个元素时, SMOVE 命令只是简单地把这个元素从source 集合中删除
      • 下图,fengxiansheng1 集合中包含 test3,所以 test3 只是从 fengxiansheng 集合中删除
  • spop:移除集合中一个或多个随机元素
    • 当集合不存在或是空集时,返回 nil
      • 下图,fengxiansheng100 这个集合不存在,所以返回空集
  • srandmember:返回集合中的一个随机元素,跟 spop 类似,但是不删除元素
    • 下图,从 fengxiansheng 集合中,随机返回一个元素,但是并不删除
    • 下图,从 fengxiansheng 集合中,随机返回 N 个元素
    •  
      • 如果 N 大于集合的长度,返回整个集合
      • 如果 N 为负数,那么返回的数组中,元素可能会重复出现多次,而数组的长度为 N 的绝对值
  • srem:移除集合中的一个或多个成员元素,返回成功移除的元素数量
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值