标签归档:NoSQL

redis源代码分析2–动态字符串

redis的字符串号称是二进制安全的,其内部实现其实就是个head+ char*。 typedef char *sds; struct sdshdr { long len; long free; char buf[]; }; len 表示buf字符数组实际使用的空间大小,free表示buf剩余空间大小,buf所分配的空间大小等于len+free。尽管一开始buf的大小等于 len(当然可以大于),但随着字符串连接、拷贝(C中的字符串函数),buf分配的空间很可能会比len大,此时redis并不会释放多出的内存。 redis源代码分析2–动态字符串

发表在 redis | 标签为 , , | 2 条评论

redis源代码分析1–链表

先简单介绍下redis中用到的链表,是在文件adlist.c和adlist.h中实现的。 实现中主要用到listNode、list、listIter三个结构,listNode代表链表中的每个节点,list指向整个链表,listIter是为了迭代访问整个list,内部其实就是个listNode指针。 typedef struct listNode { struct listNode *prev; struct listNode *next; void *value; } listNode; typedef struct listIter { listNode *next; int direction; } listIter; typedef struct list { listNode *head; listNode *tail; void *(*dup)(void *ptr); void(*free)(void *ptr); int(*match)(void … 继续阅读

发表在 redis | 标签为 , , | 8 条评论

redis相关资料

1  官方文档: redis源码doc目录中的所有文档 官方网站:http://redis.io/ 命令集合:http://redis.io/commands 2  国外分析文档: redis-from-the-ground-up: http://blog.mjrusso.com/2010/10/17/redis-from-the-ground-up.html Redis: under the hood http://pauladamsmith.com/articles/redis-under-the-hood.html redis cookbook: http://www.rediscookbook.org/ redis tutorial: http://simonwillison.net/static/2010/redis-tutorial/ Redis Virtual Memory: the story and the code: http://antirez.com/post/redis-virtual-memory-story.html redis性能测试: http://jaksprats.wordpress.com/2010/09/22/12/

发表在 redis | 标签为 , , | 3 条评论