Redis是一个功能缓存数据库,它支持五大数据类型,包括字符串类型(string)、列表(list)、集合(set)、有序集合(zset)、哈希(hash)。我觉得,相比于其他的类型,集合类型值得重点关注。

集合,简称集,是数学中一个基本概念,也是集合论的主要研究对象。集合论是在19世纪末由德国的康托尔(1845-1918)创立起来的。集合论是关于无穷集合和超穷数的数学理论,是数学中最富创造性的伟大成果之一。当然,在Redis中所指的集合都是有限元素的集合,不是集合论中的无穷集合。Redis的set集合类型和list列表类型类似,都可以用来存储多个字符串元素的集合。和list不同的是,set集合当中不允许重复的元素,而且set集合当中元素是没有顺序的,不存在元素下标。set集合类型是使用哈希表构造的,复杂度是O(1),Redis不仅支持集合内的增删改查,并且支持多个集合间的交集、并集、差集操作。更多详细的介绍请看本文的内容:

1、查看set中的元素

smembers [set]

说明:遍历操作,数据量大的时候请谨慎操作。

2、向set中插入value

sadd [set] [value]

说明:向set中插入value,成功插入返回1,插入set中已有的value则失败且返回0

3、删除set中的value

srem [set] [value]

说明:删除set中对应的value,删除成功返回1,若不存在则返回0

4、随机删除

spop [set]

说明:随机删除并返回set中的元素

5、比较删除

sdiff [set1] [set2]

说明:删除set1中在set2里也存在的元素,返回删除操作后的set1

sdiffstore [set1] [set2] [set3]

说明:将sdiff [set2] [set3] 的结果保存在set1中

6、集合交集

sinter [set1] [set2]

说明:返回set1和set2共有元素

sinterstore [set1] [set2] [set3]

说明:将sinter [set2] [set3] 结果保存在set1中

7、集合并集

sunion [set1] [set2]

说明:返回[set1] [set2]的并集

sunionstore [set1] [set2] [set3]

说明:将[set2] [set3]的并集保存在[set1]中

8、集合迁移

smove [set1] [set2] [value]

说明:将[set1] 的value移动到set2中,若value存在于set1,无论set2是否已存在,都(成功)返回1,不存在于set1则(失败)返回0

9、统计元素个数

scard [set]

说明:返回set中的元素个数

10、判断归属

sismember [set] [value]

说明:判断value是否为set中的元素,是则返回1,否则返回0

11、随机取值

srandmember [set]

说明:随机返回set中的一个元素

后记

因为集合属于数学中非常重要的基础知识,放在Redis学习过程中,也应该把set集合类型的操作认真的掌握。另外,学习需要系统化,将set集合的各种操作与sscan迭代查询相结合来学习,才是最好的学习方式。

标签: none

添加新评论