Redis数据库类型及操作-sets

set作为一种集合,可以添加删除元素,有对多个集合求交并差等操作.set是通过hash table实现的,所以添加,删除和查找的复杂度都是O(1).hash table会随着添加或者删除自动调整大小.需要注意的是调整hash table大小时候需要同步,会阻塞其他读写操作.
sadd
向名称为key的set中添加元素
sadd myset "helo"

Redis数据库类型及操作-sets_第1张图片
image.png

向myset中添加了三个元素,但是由于第三个元素跟第二个元素是相同的,所以,第三个元素没有添加成功,最后我们用smembers来查看没有set中的所有元素.
srem
删除名称为key的set中的元素member
srem myset2 "one"
Redis数据库类型及操作-sets_第2张图片
image.png

向myset2中添加了三个元素后,再调用srem来删除one和four,但是由于元素中没有four,因此词条srem命令执行失败.
spop
随机返回并删除名称为key的set中一个元素
spop myset3
Redis数据库类型及操作-sets_第3张图片
image.png

想myset3中添加了三个元素后,再调用spop来随机删除一个元素,可以看到one元素被删除了.
sdiff
返回所有给定key与第一个key的差集
sdiff myset2 myset3
Redis数据库类型及操作-sets_第4张图片
image.png

因为myset2和myset3中元素相同,所以差集是空的.
sdiffstore
返回所有给定的key与第一个key的差集,将结果存为另一个key
sdiffstore myset4 myset2 myset3
Redis数据库类型及操作-sets_第5张图片
image.png

将myset2和myset3的差集存入myset4
sinter
返回所有给定key的交集
sinter myset2 myset3
Redis数据库类型及操作-sets_第6张图片
image.png

sinterstore
返回所有给定key的交集,将结果存为另一个key
Redis数据库类型及操作-sets_第7张图片
image.png

myset2和myset3的交集被保存到myset5中去了
sunion
返回所有给定key的并集
Redis数据库类型及操作-sets_第8张图片
image.png

sunionstore
返回所给定key的并集,并将结果返回另一个key
sunionstore myset6 myset2 myset3
Redis数据库类型及操作-sets_第9张图片
image.png

myset2和myset3的并集被保存到myset6中了
smove
smove myset2 myset7 three
从第一个key对应的set中移除member并添加到第二个对应set中
Redis数据库类型及操作-sets_第10张图片
image.png

myset2的three被移到myset7中了
scard
返回名称为key的set元素的个数
scard myset2
image.png

sismember
测试member是否是名称为key的set元素
sismember myset2 four
Redis数据库类型及操作-sets_第11张图片
image.png

four是myset2的成员,而three不是
srandmember
随机返回名称为key的set的一个元素,但是不删除元素
srandmember myset2
Redis数据库类型及操作-sets_第12张图片
image.png

你可能感兴趣的:(Redis数据库类型及操作-sets)