Redis - PHP操作redis - Set数据类型函数
程序员日记 2019-08-21
1.sAdd
功能
添加一个VALUE到SET容器中,如果这个VALUE已经存在于SET中,那么返回FLASE。
命令格式sAdd(key,value)
说明
key:键值
value:要插入的值
测试用例$redis->sAdd('key1' , '123'); /* TRUE, 'key1' => {'123'} */
$redis->sAdd('key1' , '345'); /* TRUE, 'key1' => {'123', '345'}*/
$redis->sAdd('key1' , '345'); /* FALSE, 'key1' => {'123', '345'}*/
2.sRem
功能
从SET容器中移除指定的VALUE
命令格式sRem(key,value)
说明
key:键值
value:要移除的值
测试用例$redis->sAdd('key1' , '123'); /* TRUE, 'key1' => {'123'} */
$redis->sAdd('key1' , '345'); /* TRUE, 'key1' => {'123', '345'}*/
$redis->sAdd('key1' , '345'); /* FALSE, 'key1' => {'123', '345'}*/
$redis->sRem('key1', '123'); /* 'key1' => {'456'} */
3.sMove
功能
移动一个指定的MEMBER从源SET到指定的另一个SET中。
命令格式sMove(set1,set2,value)
说明
set1:源set
set2:目标set
value:要移动的值
测试用例$redis->sAdd('key1' , '123');
$redis->sAdd('key1' , '345');
$redis->sAdd('key2' , 'abc');
$redis->sAdd('key2' , 'def');
/*
'key1' => {'123', '345'}
'key2' => {'abc', 'def'}
*/
$redis->sMove('key1', 'key2', '123');
/*
'key1' => {'345'}
'key2' => {'abc', 'def','123'}
*/
4.sIsMember
功能
检查VALUE是否是SET容器中的成员。
命令格式sIsMember(key,value)
说明
key:目标键值
value:要检查的值
测试用例$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sIsMember('key1', 'member1'); /* TRUE */
$redis->sIsMember('key1', 'memberX'); /* FALSE */
5.sCard
功能
返回SET容器的成员数
命令格式sCard(key)
说明
key:目标键值
测试用例$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sCard('key1'); /* 3 */
6.sPop
功能
随机返回一个元素,并且在SET容器中移除该元素
命令格式sPop(key)
说明
key:目标键值
测试用例$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sPop('key1');
7.sRandMember
功能
取得指定SET容器中的一个随机元素,但不会在SET容器中移除它。
命令格式sRandMember(key)
说明
key:目标键值
测试用例$redis->sAdd('key1' , 'member1');
$redis->sAdd('key1' , 'member2');
$redis->sAdd('key1' , 'member3'); /* 'key1' => {'member1', 'member2', 'member3'}*/
$redis->sRandMember('key1');
8.sInter
功能
返回指定SETS集合的交集结果。如果只是指定了一个SET集合,那么返回该SET集合。如果在参数中有参数错误,那么则返回FLASE。
命令格式sInter(set1,set2,...)
说明
set1,set2,...:代表不同的SET集合。
测试用例$redis->sAdd('key1' , '123');
$redis->sAdd('key1' , 'abc');
$redis->sAdd('key1' , '346'); /* 'key1' => {'123', 'abc', '346'}*/
$redis->sAdd('key2' , '345');
$redis->sAdd('key2' , 'abd');
$redis->sAdd('key2' , '346'); /* 'key1' => {'345', 'abd', '346'}*/
$out = $redis->sInter('key1','key2');/* $out = ['346'] */
9.sInterStore
功能
执行一个交集操作,并把结果存储到一个新的SET容器中。
命令格式sInter(output,{set1,set2,...})
说明
output:要输出的SET
set1,set2,...:代表不同的SET集合。
测试用例$redis->sAdd('key1' , '123');
$redis->sAdd('key1' , 'abc');
$redis->sAdd('key1' , '346'); /* 'key1' => {'123', 'abc', '346'}*/
$redis->sAdd('key2' , '345');
$redis->sAdd('key2' , 'abd');
$redis->sAdd('key2' , '346'); /* 'key1' => {'345', 'abd', '346'}*/
$redis->sInterStore('out','key1','key2');/* out = ['346'] */
10.sUnion
功能
执行一个并集操作在N个SET容器之间,并返回结果。
命令格式sUnion(set1,set2,...)
说明
set1,set2,...:代表不同的SET集合。
测试用例$redis->sAdd('key1' , '123');
$redis->sAdd('key1' , 'abc');
$redis->sAdd('key1' , '346'); /* 'key1' => {'123', 'abc', '346'}*/
$redis->sAdd('key2' , '345');
$redis->sAdd('key2' , 'abd');
$redis->sAdd('key2' , '346'); /* 'key1' => {'345', 'abd', '346'}*/
$redis->sUnion('key1','key2');/* ['123','346','345','abc','abd'] */
11.sUnionStore
功能
执行一个并集操作,并把结果存储到一个新的SET容器中。
命令格式sUnionStore(output,{set1,set2,...})
说明
output:要输出的SET
set1,set2,...:代表不同的SET集合。
测试用例$redis->sAdd('key1' , '123');
$redis->sAdd('key1' , 'abc');
$redis->sAdd('key1' , '346'); /* 'key1' => {'123', 'abc', '346'}*/
$redis->sAdd('key2' , '345');
$redis->sAdd('key2' , 'abd');
$redis->sAdd('key2' , '346'); /* 'key1' => {'345', 'abd', '346'}*/
$redis->sUnionStore('out','key1','key2');/* out = ['123','346','345','abc','abd'] */
12.sDiff
功能
执行差集操作在N个不同的SET容器之间,并返回结果。这个操作取得结果是第一个SET相对于其他参与计算的SET集合的差集。(Result = SET0 - (SET1 UNION SET2 UNION ....SET N))
命令格式sDiff(set1,set2,...)
说明
set1,set2,...:代表不同的SET集合。
测试用例$redis->delete('key1', 'key2');
$redis->sAdd('key1' , '123');
$redis->sAdd('key1' , '345');
$redis->sAdd('key1' , '456'); /* 'key1' => {'123', '345', '456'}*/
$redis->sAdd('key2' , '123');
$redis->sAdd('key2' , '345');/* 'key2' => {'123', '345''}*/
$out = $redis->sDiff('key1','key2');/* out = ['456'] */
13.sDiffStore
功能
与sDiff函数功能一直,只是结果为一个新的SET集合,存储到dstkey。
命令格式sDiffStore(output,{set1,set2,...})
说明
output:要输出的SET
set1,set2,...:代表不同的SET集合。
测试用例$redis->delete('key1', 'key2');
$redis->sAdd('key1' , '123');
$redis->sAdd('key1' , '345');
$redis->sAdd('key1' , '456'); /* 'key1' => {'123', '345', '456'}*/
$redis->sAdd('key2' , '123');
$redis->sAdd('key2' , '345');/* 'key2' => {'123', '345''}*/
$redis->sDiffStore('out','key1','key2');/* out = ['456'] */
14.sMembers
功能
返回SET集合中的所有元素。
命令格式sMembers(key)
说明
key:键值
测试用例$redis->delete('key1');
$redis->sAdd('key1' , '123');
$redis->sAdd('key1' , '345');
$redis->sAdd('key1' , '456'); /* 'key1' => {'123', '345', '456'}*/
$redis->sMembers('key1');/* out = ['456'] */