Redis源码 - Set(集合)

2021/10/16 2:17:17

本文主要是介绍Redis源码 - Set(集合),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

 

 

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

 

 

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

 

 

 

 

 

 

 

 

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



这篇关于Redis源码 - Set(集合)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程