微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redis源码 - Set(集合)

通常我们把Redis Set结构称为无序集合,这在一定程度上是有道理的。为什么是一定程度上呢,因为通过源码的实现过程我们发现了一些小细节。从sadd命令开始入手:

 

 

 sadd先按照redis的一贯套路 检查key是否存在,不存在就创建,存在就直接添加值。只是在sadd在创建key的时候它动了一点小心思,是什么呢?看代码先:

 

 

 简单理解就是如果传入的值能够被转换为数字类型则使用的intset这种方式来保存数据,不能就用set的方式来保存。那intset是什么,set又是什么呢?

 

 

 

 

 

 

 

 

intset就是intset结构体,而set就是dict结构体。而dict上的dictEntry被定义成了一个链表的形式(由于目前笔者c水平有限,细节就没法解释了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐