四、Redis 基本数据类型:set
redis中set集合和List集合类似,只不过Set集合不会保存重复的数据元素。Set集合具有如下特点:
单键多值,即:一个key对应多个不重复的value值
set集合会自动排除重复元素
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
1、sadd命令:将一个或者多个value值添加到集合set中
# 已经存在的元素,再次插入,则会自动忽略。 # 添加成功,返回添加的元素个数。 >sadd key member [member ...]
2、smembers命令:获取该集合中所有元素
>smembers key
3、sismember命令:判断给定key的集合中,是否包含指定的value值
# 存在value值,则返回1。 # 不存在value值,则返回0。 >sismember key member
4、scard命令:返回给定key的集合中元素个数
>scard key
5、srem命令:移除集合中,某个或多个元素
# 移除成功,返回移除的元素个数。
# 如果有不存在的元素,移除时候,不会计算到移除成功的个数中。
# 例如:移除2个元素,其中一个元素在set集合中不存在,则返回值是1。
>srem key member [member ...]
6、spop命令:随机从set集合中,获取一个或多个值
# 返回弹出的元素。
# 取出的值,会在set集合删除。
>spop key [count]
7、srandmember命令:随机从集合中,获取一个或多个值
# 获取的值,在set集合中不会被删除。
# count可以是任意数字
>srandmember key [count]
8、smove命令:把集合1中的一个value值,移到集合2中
# 移动的元素集合,被移动的元素会在原集合中删除。
# 如果目标集合中存在该value值,则覆盖该值。
# 移动成功,返回移动1。
>smove source destination member
9、sinter命令:返回集合的交集
# 返回两个或多个集合的共有元素集合
>sinter key [key ...]
10、sunion命令:返回集合的并集元素(全部元素)
# 返回两个或多个集合的不重复元素。
>sunion key [key ...]
11、sdiff命令:返回集合1和其它集合的差集元素
# set1-set2-set3...
>sdiff key [key ...]