set集合和list列表十分的相似,都可以存储多个字符串。但是list列表可以存储重复值,而set集合中不可重复。
一:集合数据结构
其中的user为键名,其可以包含多个 不重复 的元素,各不相同
[ "user":[ "camellia1", "camellia2", "camellia3" ] ]
二:操作命令:这里分两种,linux、PHP
1:linux命令应用
首先登陆redis,就像登陆mysql一样,执行命令:
redis-cli //进入 redis 操作界面
(1)添加一个元素到集合,返回 1代表插入成功;0元素代表已经存在或失败
sadd user camellia // 返回(integer) 1 sadd user jerry // 返回(integer) 1 sadd user camellia // 返回(integer) 0,写入失败,因为已经存在。
(2)获取集合内全部的元素,成功返回 全部元素,如果数据量很大,这条命令要谨慎使用
smembers user // 返回 1) "jerry"2) "camellia"
(3)这个集合的重要功能,使用sismember命令 检查元素是否在集合中 , 存在返回1,不存在返回0
sismember user camellia // 返回(integer) 1 sismember user xxx // 返回(integer) 0
(4)删除一个元素,如果删除成功过后,会返回 被删除元素的个数
srem user jerry // 返回(integer) 1 srem user xxx // 返回(integer) 0
2:PHP命令应用
(1)插入一个元素camellia到user集合。1代表插入成功;0元素代表已经存在
$res = $redis->sadd("user","camellia"); // 添加成功,返回1 $ult = $redis->sadd("user","camellia"); // 添加失败,返回0,因为数据不可以重复
(2)使用smembers命令将集合中的元素全部取出
// 将数据全部取出,因为我们只添加了一个,只有camelliaarray=array = array=redis->smembers("user");
(3):使用sismember命令来检查一个元素是否存在于集合中,这个在检查如昵称是否已经存在 时候非常有用
// 还是刚刚我们看的那个最重要的命令,查看当前元素是否在集合中 $rrr = $redis->sismember("user","camellia"); // 返回 true $rrr = $redis->sismember("user","xxx"); // 返回 false
(4)删除一个元素,返回删除的个数。返回1,删除成功,返回0,删除失败
// 删除一个元素,返回删除的个数。返回1,删除成功,返回0,删除失败 $esd = $redis->srem("user","camellia"); //返回 int 1
3:SET集合类型常用命令
序号
命令及描述
1
SADD key member1 [member2] 向集合添加一个或多个成员
2
SCARD key 获取集合的成员数
3
SDIFF key1 [key2] 返回给定所有集合的差集
4
SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中
5
SINTER key1 [key2] 返回给定所有集合的交集
6
SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中
7
SISMEMBER key member 判断 member 元素是否是集合 key 的成员
8
SMEMBERS key 返回集合中的所有成员
9
SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合
10
SPOP key 移除并返回集合中的一个随机元素
11
SRANDMEMBER key [count] 返回集合中一个或多个随机数
12
SREM key member1 [member2] 移除集合中一个或多个成员
13
SUNION key1 [key2] 返回所有给定集合的并集
14
SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中
15
SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素
以上基本上是我看的redis SET集合类型的基本内容,有不足的地方,还请大佬指出。