redis-sets 类型及操作

时间:2016-11-17 15:28:16 阅读:475次
redis-sets 类型及操作

set 是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作,操作中key 理解为集合的名字。Redis 的set 是string 类型的无序集合。set 元素最大可以包含(2 的32 次方)个元素。set 的是通过hash table 实现的,所以添加、删除和查找的复杂度都是O(1)。hash table 会随着添加或者删除自动的调整大小。需要注意的是调整hash table 大小时候需要同步(获取写锁)会阻塞其他读写操作,可能不久后就会改用跳表(skip list)来实现,跳表已经在sorted set 中使用了。关于set 集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐和blog 的tag 功能。下面详细介绍set 相关命令:


sadd key member [member ..] 向名称为key 的set 中添加元素,已存在时添加失败

srem key member 删除名称为key 的set 中的元素member,元素不存在删除失败

spop key 随机返回并删除名称为key 的set 中一个元素

scard key 返回名称为key 的set 的元素个数

sismember key member 测试member 是否是名称为key 的set 的元素

srandmember 随机返回名称为key 的set 的一个元素,但是不删除元素

smove source destination member 从第一个key 对应的set 中移除member 并添加到第二个对应set 中


sdiff key [key ..] 返回所有给定key 与第一个key 的差集

sdiffstore destination key [key ..] 返回所有给定key 与第一个key 的差集,并将结果存为另一个key

sinter key [key ..] 返回所有给定key 的交集 

sinterstore destination key [key ..] 返回所有给定key 的交集,并将结果存为另一个key

sunion key [key ..] 返回所有给定key 的并集

sunionstore destination key [key ..] 返回所有给定key 的并集,并将结果存为另一个key

扫描二维码关注程序员爱笔记,接收更多资讯

评论

快速评论