Redis源码阅读——字典
发表于|更新于|源码阅读
|总字数:93|阅读时长:1分钟|浏览量:
Redis源码阅读——字典
字典是整个Redis实现的基础,之前把《Redis设计与实现》书上的理论知识看完了,开始阅读源码。
Rehash
参考
https://tech.meituan.com/2018/07/27/redis-rehash-practice-optimization.html
文章作者: BraveY
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 BraveY!
相关推荐

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...

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模块...

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...

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 " ...

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...

2019-04-26
Redis Makefile注解
Redis Makefile注解Redis的makefile是阅读源码的第一步,总共有292行,读起来也是头大,记录之。 4.02版本源码为: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771...
评论
公告
感谢访问本站,若喜欢请收藏 ^_^



