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

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:移除集合中的一个或多个成员元素,返回成功移除的元素数量