该集合不重复且没有顺序,插入和取出的顺序不一致
Redis中列表和集合都可以用来存储字符串,但是「Set是不可重复的集合,而List列表可以存储相同的字符串」,Set集合是无序的这个和后面讲的ZSet有序集合相对。 Set的底层实现是「ht和intset」,ht(哈希表)前面已经详细了解过,下面我们来看看inset类型的存储结构。 inset也叫做整数集合,用于保存整数值的数据结构类型,它可以保存int16_t、int32_t 或者int64_t 的整数值。 在整数集合中,有三个属性值encoding、length、contents[],分别表示编码方式、整数集合的长度、以及元素内容,length就是记录contents里面的大小。 在整数集合新增元素的时候,若是超出了原集合的长度大小,就会对集合进行升级,具体的升级过程如下: 第一步:首先扩展底层数组的大小,并且数组的类型为新元素的类型。 第二步:然后将原来的数组中的元素转为新元素的类型,并放到扩展后数组对应的位置。 整数集合升级后就不会再降级,编码会一直保持升级后的状态。
添加
SADD key member [member …]
查询
SMEMBERS key
查询该集合中所有的元素
SSCAN key cursor [MATCH pattern] [COUNT count]
模糊查询 cursor - 游标。 pattern - 匹配的模式。 count - 指定从数据集里返回多少元素,默认值为 10 。
SCARD key
查询该集合中一共有多少个元素
删除元素
SREM key member [member …]
从集合 key中删除并返回一个或多个随机元素
判断该集合中是否包含该元素
包含返回1 ,不包含返回0
SISMEMBER key member
交集 并集 差集
SDIFF key [key …]
差集
SINTER key [key …]
交集
SUNION key [key …]
并集 求差集 交集 并集 还有对应的三个命令,这三个命令是把求出来的结果保存到了一个新的集合中了,如下:
SDIFFSTORE destination key [key …]
SINTERSTORE destination key [key …]
SUNIONSTORE destination key [key …]
是否存在
SMISMEMBER key member [member …]
判断给出的元素是否是该集合中的元素,按照元素输入的顺序给出结果,1表示存在,0表示不存在
移动
SMOVE source destination member
将source 集合中的特定元素移动到destination 集合中,如果destination 集合在redis中不存在,则先创建destination 集合,再把元素添加进去
随机返回一定数量的元素
可以用来设定抽奖活动
SRANDMEMBER key [count]
随机返回一定数量的元素, 但是不删除原有集合中的元素 count为正数; 取出一个去重的结果集,不能超过已有集 count为负数;取出一个带重复的结果集,一定满足你的数量 count为0; 不返回
SPOP key [count]
随机返回一定数量的元素, 但是要删除返回的元素
|