redis数据库查找key在内存中的位置的方法

一、预先需要了解的知识
1、redis 中的每一个数据库,都由一个 redisDb 的结构存储。其中,redisDb.id 存储着 redis 数据库以整数表示的号码。redisDb.dict 存储着该库所有的键值对数据。redisDb.expires 保存着每一个键的过期时间。
2、当redis 服务器初始化时,会预先分配 16 个数据库(该数量可以通过配置文件配置),所有数据库保存到结构 redisServer 的一个成员 redisServer.db 数组中。当我们选择数据库 select number  时,程序直接通过 redisServer.db[number] 来切换数据库。有时候当程序需要知道自己是在哪个数据库时,直接读取 redisDb.id 即可。
3、既然我们知道一个数据库的所有键值都存储在redisDb.dict中,那么我们要知道如果找到key的位置,就有必要了解一下dict 的结构了:

复制代码 代码如下:
typedef struct dict {


// 特定于类型的处理函数
dictType *type;


// 类型处理函数的私有数据
void *privdata;


// 哈希表(2个)
dictht ht[2];


// 记录 rehash 进度的标志,值为-1 表示 rehash 未进行
int rehashidx;


// 当前正在运作的安全迭代器数量
int iterators;
} dict;

原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/236679.html

(0)
上一篇 2022年1月24日
下一篇 2022年1月24日

相关推荐

发表回复

登录后才能评论