Redis 的 set 无序集合,与 list 类似,特殊之处在于 set 可以自动排重,不会出现重复数据

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

set 支持判断某个成员是否在一个集合,list 是没有的

特征:元素不重复,保持唯一性;无序,不能使用索引(下标)操作

添加元素到集合(sAdd)

$redis->sAdd('user_name', 'Beverly');
$redis->sAdd('user_name', 'Black');
$redis->sAdd('user_name', 'Blackwell');

移动指定成员元素到新集合(Smove)

// 将指定成员 Beverly 元素从 name 集合移动到 new_name 集合
$redis->Smove('user_name','new_key_name','Beverly');

移除并返回 集合中的一个随机元素(sPop)

// sPop(key,[count])
// 从集合中随机取出元素的,[count]要取出多少个数据,默认是1
$redis->sPop('user_name');

返回集合中的一个随机元素(Srandmember)

// Srandmember(set_key,[count]) 从集合中随机取出元素
// count 要取出多少个数据,默认是1
// 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个数元素的数组,数组中的元素各不相同
// 如果 count 大于等于集合基数,那么返回整个集合
// 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值
$redis->Srandmember('user_name');

删除集合里指定的值(sRem)

// 移除集合中的一个或多个成员元素,不存在的成员元素会被忽略
$redis->sRem('user_name', 'Blackwell', 'Black');

迭代集合(sScan)

//sScan(KEY ,[MATCH pattern],[COUNT]) 迭代集合键中的元素 --- //模糊搜索相对的元素
//参数:key,迭代器变量,匹配值,每次返回元素数量(默认为10个)
$redis->sscan('user_name', $it, 'B*', 5);

获取所有成员(sMembers)

$redis->sMembers('user_name');

获取集合元素个数(sCard)

$redis->sCard('user_name');

并集/差集/交集(sUnion/Sunionstore/sDiff/sDiffstore/sInter/sInterstore)

$redis->sUnion('user_name', 'set_key_second');// 并集
// 并集,将给定集合的并集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖
$redis->Sunionstore('user_name','set_key','set_key_second');
// 差集
$redis->sDiff('user_name', 'set_key_second');
// 差集,将给定集合之间的差集存储在指定的集合中。如果指定的集合已存在,则会被覆盖
$redis->sDiffstore('user_name','set_key','set_key_second');
// 交集
$redis->sInter('user_name', 'set_key_second');
// 交集,将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖
$redis->sInterstore('user_name','set_key','set_key_second');

 判断元素是否是集合的成员(Sismember)

$redis->Sismember('user_name','小A');