原创

redis数据结构-五种数据类型-Set


Set是Redis中的单列集合,满足下列特点:

  • 不保证有序性
  • 保证元素唯一(可以判断元素是否存在)
  • 求交集、并集、差集

微信截图_20230209212034

可以看出,Set对查询元素的效率要求非常高,思考一下,什么样的数据结构可以满足?

  • HashTable,也就是Redis中的Dict,不过Dict是双列集合(可以存键、值对)

Set是Redis中的集合,不一定确保元素有序,可以满足元素唯一、查询效率要求极高。

  • 为了查询效率和唯一性,set采用HT编码 (Dict)。Dict中的key用来存储元素,value统一为null。
  • 当存储的所有数据都是整数,并且元素数量不超过set-max-intset-entries时,Set会采用IntSet编码,以节省内存。

微信截图_20230211142123

当每次插入数据时会做一下数据类型判断,来确定是要使用IntSet编码还是HT编码

微信截图_20230211142835

set-max-intset-entries的默认值是512

Set的转换流程

往一个都是int类型的Set集合里面插入一条String类型的数据所发生的变化

插入前

微信截图_20230211143759

插入后

微信截图_20230211144039

redis原理
数据结构
  • 作者:陌攻(联系作者)
  • 发表时间:2023-02-13 02:43
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论