Redis源码研究--跳表】的更多相关文章

-------------6月29日-------------------- 简单看了下跳表这一数据结构,理解起来很真实,效率可以和红黑树相比.我就喜欢这样的. typedef struct zskiplist { struct zskiplistNode *header, *tail; unsigned long length; int level; } zskiplist; 跳表包括头.尾.长度.层数. typedef struct zskiplistNode { robj *obj; do…
计划每天花1小时学习Redis 源码.在博客上做个记录. --------6月18日----------- redis的字典dict主要涉及几个数据结构, dictEntry:具体的k-v链表结点 dictht:哈希表 dict:字典 具体关系为 typedef struct dict { dictType *type; void *privdata; dictht ht[]; int rehashidx; /* rehashing not in progress if rehashidx ==…
[http://dongxicheng.org/nosql/redis-code-hashtable/] 1. Redis中的哈希表 前面提到Redis是个key/value存储系统,学过数据结构的人都知道,key/value最简单的数据结果就是哈希表(当然,还有其他方式,如B-树,二叉平衡树等),hash表的性能取决于两个因素:hash表的大小和解决冲突的方法.这两个是矛盾的:hash表大,则冲突少,但是用内存过大:而hash表小,则内存使用少,但冲突多,性能低.一个好的hash表会权衡这两个…
---------------------6月23日--------------------------- Redis启动入口即main函数在redis.c文件,伪代码如下: int main(int argc, char **argv) { initServerConfig(); ) { loadServerConfig(configfile,options); } else { redisLog(REDIS_WARNING, ], server.sentinel_mode ? "sentin…
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/667 本文使用的Redis 5.0源码 概述 我们在学习 Redis 的 Hash 表的时候难免脑子里会想起其他 Hash 表的实现,然后进行一番对比.通常我们如果要设计一个 Hash 表,那么我们需要考虑这几个问题: 有没有并发操作: Hash冲突如何解决: 以什么样的方式扩容. 对 Redis 来说,首先它是单线程的工作模式,所以不需要考虑并发问题,这题 pas…
参照:https://juejin.im/post/57fa935b0e3dd90057c50fbc#comment http://redisbook.com/preview/skiplist/datastruct.html…
1. Redis 是什么 Redis是一个开源的使用ANSI C语言编写的基于内存的key/value存储系统,与memcache类似,但它支持的value类型更多,包括:字符串(string).链表(list).集合(set).有序集合(sorted set)和hash tablehttp://blog.nosqlfan.com/html/2235.html等,这些数据类型支持push/pop.add/remove.交集并集差集及其他更丰富的操作,且这些操作均是原子性的. 按照分布式领域的CA…
------------7月3日------------ /* The redisOp structure defines a Redis Operation, that is an instance of * a command with an argument vector, database ID, propagation target * (REDIS_PROPAGATE_*), and command pointer. * * Currently only used to additi…
之前看的内容,占个位子,以后补上. ------------8月2日------------- 好久没看了,惭愧,今天抽了点时间重新看了Redis的字符串,一边写博客,一边看. Redis的字符串主要在sds.h.sds.c文件中.打开sds.h,发现代码也不多.贴一下 typedef char *sds; struct sdshdr { int len; int free; char buf[]; }; 看到了没,sds其实就是个char* ,刚开始看到这里,觉得好失望,这不是骗国家的钱吗,往…
之前看的内容,占个位子,以后补上. ----------8月4日--------------- 双向链表这部分看的比较爽,代码写的中规中矩,心里窃喜,跟之前学的<数据结构>这本书中差不多. //链表结点 typedef struct listNode { struct listNode *prev; struct listNode *next; void *value; } listNode; //链表头 typedef struct list { listNode *head; listNo…