[list]
[*]集合类型的概念
[*]集合类型的底层实现
[*]集合类型的应用场景
[/list]
一、set是string类型的无序集合,无重复元素,底层是hashtable。对该集合可以取并集、交集、差集。(通过这些操作我们可以实现sns中的好友推荐)。set的最大长度是2^32-1.
二、底层实现
Redis 集合类型使用两种数据结构作为底层实现:
1. 整数集合
2. 字典
当集合对象保存的所有元素都是整数值且元素数量不超过512个时使用整数集合;不满足这个条件的集合对象使用 hashtable 编码。
当使用字典编码时,集合将元素保存到字典的键里面,而字典的值统一设为 NULL,下图展示了一个以字典编码表示的集合,集合成员为 elem1、elem2 和 elem3。
图解(引自极客学院玉不琢老师):
集合:
[img]http://dl2.iteye.com/upload/attachment/0113/4022/f7ac3b98-1eac-39a6-9adc-b90acb3b293f.jpg[/img]
底层存储模式:
[img]http://dl2.iteye.com/upload/attachment/0113/4020/aa812543-899a-30f9-a85b-8bbec9284050.png[/img]
[*]集合类型的概念
[*]集合类型的底层实现
[*]集合类型的应用场景
[/list]
一、set是string类型的无序集合,无重复元素,底层是hashtable。对该集合可以取并集、交集、差集。(通过这些操作我们可以实现sns中的好友推荐)。set的最大长度是2^32-1.
二、底层实现
Redis 集合类型使用两种数据结构作为底层实现:
1. 整数集合
2. 字典
当集合对象保存的所有元素都是整数值且元素数量不超过512个时使用整数集合;不满足这个条件的集合对象使用 hashtable 编码。
当使用字典编码时,集合将元素保存到字典的键里面,而字典的值统一设为 NULL,下图展示了一个以字典编码表示的集合,集合成员为 elem1、elem2 和 elem3。
图解(引自极客学院玉不琢老师):
集合:
[img]http://dl2.iteye.com/upload/attachment/0113/4022/f7ac3b98-1eac-39a6-9adc-b90acb3b293f.jpg[/img]
底层存储模式:
[img]http://dl2.iteye.com/upload/attachment/0113/4020/aa812543-899a-30f9-a85b-8bbec9284050.png[/img]
本文介绍了Redis中Set数据类型的基本概念,包括其内部实现方式及应用场景。Set是一种无序且不包含重复元素的数据结构,适用于执行集合间的并集、交集和差集运算,例如社交网络中的好友推荐功能。
881

被折叠的 条评论
为什么被折叠?



