avatar
文章
65
标签
95
分类
19
首页
归档
标签
分类
BraveYRedis源码阅读——字典 返回首页
首页
归档
标签
分类

Redis源码阅读——字典

发表于2019-04-10|更新于2026-03-07|源码阅读
|总字数:93|阅读时长:1分钟|浏览量:

Redis源码阅读——字典

字典是整个Redis实现的基础,之前把《Redis设计与实现》书上的理论知识看完了,开始阅读源码。

Rehash

参考

https://tech.meituan.com/2018/07/27/redis-rehash-practice-optimization.html

https://luoming1224.github.io/2018/11/12/[redis%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0]redis%E6%B8%90%E8%BF%9B%E5%BC%8Frehash%E6%9C%BA%E5%88%B6/

文章作者: BraveY
文章链接: https://bravey.github.io/2019-04-10-Redis%E6%BA%90%E7%A0%81%E9%98%85%E8%AF%BB%E2%80%94%E2%80%94%E5%AD%97%E5%85%B8.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 BraveY!
redis源码阅读
cover of previous post
上一篇
Linux shell脚本计算运行时间
Linux shell脚本计算运行时间这个功能经常用但是,总是现用现查,很麻烦。 代码 123456789101112131415161718192021222324252627282930313233343536# filename: msec_diff.shfunction timediff() {# time format:date +"%s.%N", such as 1502758855.907197692 start_time=$1 end_time=$2 start_s=${start_time%.*} start_nanos=${start_time#*.} end_s=${end_time%.*} end_nanos=${end_time#*.} # end_nanos > start_nanos? # Another way, the time part may start wit...
cover of next post
下一篇
gdb 调试
gdb调试以前学习过,用得少,又忘记了,现在刚好为了调试redis 的dict 模块,所以再次记录。 使用摘自参考<https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/gdb.html>。 主要是补充实例 对C/C++程序的调试,需要在编译前就加上-g选项: 1$g++ -g hello.cpp -o hello 自己的Makefile里面修改成: 12dict-benchmark: dict.c sds.c siphash.c $(CC) -g -o $@ $^ 但是好像没加之前也是可以直接就使用gdb 了? 不知道为什么(可以使用但是出错不会显示所在的行,相当于没有调试) 调试可执行文件: 1$gdb <program> program也就是你的执行文件,一般在当前目录下。 调试core文件(core是程序非法执行后core dump后产生的文件): 12$gdb <program> <core dump file>$gdb program core....
相关推荐
cover
2019-03-20
Redis设计与实现读书笔记——第二章SDS
Redis设计与实现读书笔记——第二章为了做Redis相关实验,在网上粗略看了Redis设计与实现的电子版,感觉收获很多,但是因为是旧版,所以买了第二版,重读第二次。 第二章 简单动态字符串简介 字符串值的键值对在底层都是由SDS实现的。 sds的功能: 存储字符串值 用作缓冲区 AOF模块缓冲区 客户端状态的输入缓冲区 2.1 SDS的定义文件:sds.h/sdshdr 结构体 书中的为3.0版本,4.0版本有较大改动。 version: redis-4.02 参考:https://www.cnblogs.com/chenpingzhao/p/7292182.html https://www.codesheep.cn/2018/08/09/Redis%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%B1%BB%E5%9E%8B%E5%86%85%E9%83%A8%E7%BC%96%E7%A0%81%E5%89%96%E6%9E%90/ 123456789101112131415161718192021222324252627282930313233t...
cover
2019-03-22
Redis源码阅读——SDS
Redis源码阅读——SDS参考Redis设计与实现 以及网上博客阅读Redis源码。 SDS相关知识点见读书笔记。 创建和销毁为了能够对sds进行相关API的测试,因此把sds模块单独提出来。阅读Redis的Makefile发现,编译sds模块需要的源文件包括sds.c, sds.h zmalloc.c 123test-sds: sds.c sds.h $(REDIS_CC) sds.c zmalloc.c -DSDS_TEST_MAIN $(FINAL_LIBS) -o /tmp/sds_test /tmp/sds_test 但是实际编译后会发现会报很多函数未定义的错。原因是redis源码里面sds的内存分配、释放、重分配这些函数是封装成zmalloc,zfee这些函数的,只单纯的把zmalloc.c提取出来是远远不够的。后面发现redis的作者已经把sds给单独提出来了。包括三个源文件sds.c,sds.h,sdsalloc.h 因此执行如下操作即可单独把redis的sds模块提取出来。 提取sds模块...
cover
2019-03-12
使用YCSB 评测redis性能
使用YCSB 评测redis性能YCSB是雅虎推出的可以评测许多主流数据库性能的基准测试,其中包括Redis。 安装YCSB 安装java和maven 机子已经有了java,所以只用安装maven Ubuntu安装命令为: sudo apt-get install maven 安装YCSB 123git clone http://github.com/brianfrankcooper/YCSB.gitcd YCSBmvn -pl com.yahoo.ycsb:redis-binding -am clean package 必须是gitclone的源码包才能执行mvn 命令。wget或者curl下来包是已经编译好了的无需执行mvn命令。 mvn -pl com.yahoo.ycsb:redis-binding -am clean package 报错: 123456789[INFO] Scanning for projects...[ERROR] [ERROR] Could not find the selected proje...
cover
2019-03-14
shell 脚本遍历redis数据库
使用shell脚本遍历redis数据库中的所有kv对记录下如何使用shell通过redis-cli 命令来操作redis数据库,因为直接在命令行中输入 redis-cli command 的话command必须是单个单词,不能像是KEYS * 这种. 123456789101112#!/bin/bashfilename='redis'`date +%Y-%m-%d_%H:%M`work_path=$(dirname "$0") echo "实例化redis数据文件为:$work_path/$filename"echo "keys *" | redis-cli > key_db.txtecho "将所有key保存到:$work_path/key_db.txt"for line in `cat key_db.txt`do echo "key:$line " ...
cover
2019-04-03
Redis源码阅读——dict
Redis源码阅读——dict继续Redis 的源码阅读,进入dict这一章节。知识点讲解,见redis设计与实现的读书笔记dict这一章。 dict的创建还是和sds一样单独将dict模块给提取出来,参考博客是直接将server的main函数给修改了的。再阅读Makefile的时候发现了dict-benchmark 这个选项,make dict-benchmark 这个命令,可以编译出一个可执行文件dict-benchmark。 所以想着应该可以单独再把dict-benchmark给提取出来。 需要拷贝的文件 1dict.c ditc.h fmacros.h redisassert.h sdsaclloc.h sds.c sds.h siphash.c 需要做的修改 zmalloc zfree zcalloc 需要修改成使用malloc ,free, calloc 其中zcalloc在修改成calloc的时候需要在调用的时候多传入一个参数1,作为第一个参数,因为zcalloc 和calloc 的接口不一样。 还需要在redisassert.h 中对_serverAsser...
cover
2019-04-26
Redis Makefile注解
Redis Makefile注解Redis的makefile是阅读源码的第一步,总共有292行,读起来也是头大,记录之。 4.02版本源码为: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771...

评论
avatar
BraveY
今日事,今日毕
文章
65
标签
95
分类
19
Follow Me
公告
感谢访问本站,若喜欢请收藏 ^_^
目录
  1. 1. Redis源码阅读——字典
  2. 2. Rehash
  3. 3. 参考
最新文章
闲置笔记本变身边AI助手:飞牛NAS + Docker + 旁路由部署nanobot全攻略
闲置笔记本变身边AI助手:飞牛NAS + Docker + 旁路由部署nanobot全攻略2026-03-07
NSQ学习笔记2——lookupd
NSQ学习笔记2——lookupd2023-03-12
NSQ学习笔记1——简介
NSQ学习笔记1——简介2023-02-05
C专家编程读书笔记
C专家编程读书笔记2021-03-18
C语言传递指针参数的陷阱
C语言传递指针参数的陷阱2020-12-12
© 2020 - 2026 By BraveY