浅谈redis数据结构之集合

1. 集合

       集合(set)类型也是用来保存多个字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。极限情况,一个集合最多可以存储2 ^ 32 - 1个元素。

       假设集合user:1:follow包含着 "it"、"music"、"his"、"sports"四个元素,如下图所示:

浅谈redis数据结构之集合

       

       Redis除了支持集合内的增删改查,同时还支持多个集合取交集、并集、差集。合理地使用好集合类型,能在实际开发中解决很多实际问题。

2. 相关命令

  • 集合内的操作命令

浅谈redis数据结构之集合

  • 集合间的操作命令

浅谈redis数据结构之集合

浅谈redis数据结构之集合

  • 集合命令的时间复杂度

浅谈redis数据结构之集合

3. 内部编码

       集合类型的内部编码有两种,如下表所示:

内部编码说明
整数集合(intset)当集合中的元素都是整数且元素个数小于set-max-intset-entries配置(默认512个)时,Redis会选用intset来作为集合的内部实现,从而减少内存的使用。
哈希表(hashtable)当集合类型无法满足intset的条件时,Redis会使用hashtable作为集合的内部实现。

       由于篇幅所限,这里就不掩饰元素个数超过默认配置的场景了,具体示例如下图所示:

浅谈redis数据结构之集合

4. 后续

       本文介绍了Redis中的集合的一些基本命令,包括集合内部的操作命令和集合之间的操作命令,其次还介绍了集合的内部编码转换。

       下面一篇文章会单独研究下以用户行为标签为主的应用场景,整理中.......

相关推荐