🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
~~~ /*Set,没有重复的member,创建更新同操作*/ $redis->sAdd('key','value1','value2','valuen');//增,改,将一个或多个member元素加入到无序集合key当中,已经存在于集合的member元素将被忽略。[insert_num] $redis->sRem('key','value1','value2','valuen');//删,移除无序集合key中的一个或多个member元素,不存在的member元素会被忽略 [del_num | false] $redis->sMembers('key');//查,返回无序集合key中的所有成员 [array | ''] $redis->sGetMembers('key');//查 返回无序集合中的所有成员 $redis->sIsMember('key','member');//判断member元素是否是集合key的成员 [1 | 0] $redis->sPop('key');//删,移除并返回集合中的一个随机元素 [member | false] $redis->sRandMember('key');//查,返回集合中的一个随机元素 [member | false] $redis->sInter('key1','key2','keyn');//查,返回所有给定集合的交集 [array | false] $redis->sUnion('key1','key2','keyn');//查,返回所有给定集合的并集 [array | false] $redis->sDiff('key1','key2','keyn');//查,返回所有给定集合的差集 [array | false] $redis->sCard('key');//返回集合key的基数(集合中元素的数量)。[num | 0] $redis->sMove('key1', 'key2', 'member');//移动,将member元素从key1集合移动到key2集合。[1 | 0] sDiffStore(destination,key1,key2,keyn) - 保存指定key的差集到destination集合并返回,destination存在则覆盖 destination 可以是 key 本身 $redis->sAdd('s0', '1'); $redis->sAdd('s0', '2'); $redis->sAdd('s0', '3'); $redis->sAdd('s0', '4'); $redis->sAdd('s1', '1'); $redis->sAdd('s2', '3'); $redis->sDiffStore('dst', 's0', 's1', 's2'); $redis->sMembers('dst');//[4,2] //sInterStore(newkey,key1,key2,keyn) - 执行sInter命令(交集)并将结果存储在新集合newkey中 $redis->sAdd('key1', 'val1'); $redis->sAdd('key1', 'val2'); $redis->sAdd('key1', 'val3'); $redis->sAdd('key1', 'val4'); $redis->sAdd('key2', 'val3'); $redis->sAdd('key2', 'val4'); $redis->sAdd('key3', 'val3'); $redis->sAdd('key3', 'val4'); $redis->sInterStore('output', 'key1', 'key2', 'key3'); $redis->sMembers('output');//['val3','val4'] sUnionStore(newkey,key1,key2,keyn) //执行sUnion命令(并集)并将结果存储在新集合newkey中 //sScan(key,iterator,key's_pattern,count) - 迭代无需集合的key(替代阻塞的keys*) $it = NULL; $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); // don't return empty results until we're done while($arr_mems = $redis->sScan('set', $it, "*pattern*")) { foreach($arr_mems as $str_mem) { echo "Member: $str_mem\n"; } } $it = NULL; $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_NORETRY); // return after each iteration, even if empty while(($arr_mems = $redis->sScan('set', $it, "*pattern*"))!==FALSE) { if(count($arr_mems) > 0) { foreach($arr_mems as $str_mem) { echo "Member found: $str_mem\n"; } } else { echo "No members in this iteration, iterator value: $it\n"; } } ~~~