huangzworks / annotated_redis_source Goto Github PK
View Code? Open in Web Editor NEW带有详细注释的 Redis 2.6 源码
License: BSD 3-Clause "New" or "Revised" License
带有详细注释的 Redis 2.6 源码
License: BSD 3-Clause "New" or "Revised" License
Good afternoon.
I noticed in your code the functions using tmpnam. the problem with this function is that it only determines the availability of the filename at the time it is called.
those. when you start working with this name, you are not sure about the absence of a file with this name.
if it is important then you need to use mkstemp or mkdtemp.
这一行
https://github.com/huangz1990/annotated_redis_source/blob/unstable/src/rio.c#L83
应该是
“将长度为 len 的内容从 RIO 缓存复制到 buf 中。”
:)
你好,请问一下,要用什么来搭建redis的编译环境?我想进行调试,跟踪代码,我的系统是mac。谢谢!!!
建议加个导读,就是源码的推荐阅读顺序
如题。
防止类似这样的情况: #7
/*
void sdsfree(sds s) {
if (s == NULL) return;
zfree(s-sizeof(struct sdshdr));
}
这里的 “给定 sds 必须为 NULL” 是不是笔误写错了
这里似乎会产生一个误解,ZADD 一开始都是使用的ziplist,只有满足 zset_max_ziplist_entries 或是 zset_max_ziplist_value 时才会把ziplist转换成skiplist。
我看到后面的部分书中也解释了这个问题。
但是在我读到跳跃表着一个章节,调试源代码的时候,被这个例子纠结了不少时间。我感觉标注一下会好很多。
我评论了一下,但是似乎不会收到回复,所以我就在这里new issue了 : )
在rdb.c 的第121行:
len = htonl(len);
为什么要这步?
求解答.谢谢.
https://github.com/huangz1990/annotated_redis_source/blob/unstable/src/t_zset.c
上的注释说的是o(n),但是为啥官方文档上说是log(n)+m呢?
建议把添加注视前的代码checkout到一个分支(base). 方便对比, 看了看 好像是从bf0852e5ed56dfbe32e19d926f8d5cc76f750cc8 后开始修改的.
c5e913e 注释 t_string.c/getGenericCommand 函数
7060e07 注释 t_string.c/setGenericCommand 函数
bf0852e Merge pull request #807 from bmcmanus/issue-804
ab2924c Memory leak fixed: release client's bpop->keys dictionary.
还有,从unstable开发,不是一个好的选择.
Found a typo in line 967, src/redis.h
the "lopp" should be "loop".
:)
书中在sds模块API http://www.redisbook.com/en/latest/internal-datastruct/sds.html
写到
“sdsupdatelen 更新给定 sds 所对应 sdshdr 结构的 free 和 len 算法复杂度 O(1)”
void sdsupdatelen(sds s) {
struct sdshdr *sh = (void*) (s-(sizeof(struct sdshdr)));
// 计算正确的 buf 长度
int reallen = strlen(s);
// 更新属性
sh->free += (sh->len-reallen);
sh->len = reallen;
}
C 函数库 中的 strlen 不是O(n) 么?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.