概要
Set(集合),将一些有关联的数据放到一起,集合中的元素是无序的,并且集合中的元素是不能重复的
之前介绍的list就是有序的,对于列表来说[1, 2, 3] 和 [2, 1, 3]是两个不同的列表,而对于集合来说,[1, 2, 3] 和 [2, 1, 3]是同一个集合
并且,set类型和list类型类似,每个元素都是string类型的
sadd
向集合中添加一个或多个元素,返回成功添加了多少个元素,时间复杂度O(1)
演示:
smembers
获取set中全部的元素
sismember
判断当前元素是否在集合中,如果在返回1,如果不在返回0
演示:
scard
获取集合中元素的个数,如果key不存在则返回0
spop
随机删除集合中count个元素(不写count就是随机删除一个元素),返回删除的元素
演示:
官方文档中展示了,spop实现时采用了生成随机数的方式来随机删除
srandmember
和spop类似,随机获取元素,但是不删除
smove
把一个元素从source集合中取出来,放到destination集合中
演示:
如果source中移动的元素在destination中已经存在,source中的元素确实会删除,但是destination中并不会再次插入元素
如果source中不存在要移动的元素,则返回0
srem
删除集合中一个或多个元素,返回值是成功删除的元素个数
演示:
集合间操作
sinter
获取若干个key的交集,时间复杂度O(N*M)
演示:
sinterstore
获取若干个key的交集,将结果放到destination中,返回值是交集的元素个数
演示: