首先从redis.c源码的main()函数开始,在调用的initServer函数中除了初始化redis节点本身的一些配置和环境之外,会根据是否设置cluster_enabled参数来对cluster进行初始化,如下:initServer
//也就是redis.conf配置中的参数cluster-enabled如果设置为yes,则进入cluster模式
->..
分类:
其他好文 时间:
2014-09-26 08:34:29
阅读次数:
280
1 AOF日常命令append:
1.1. Redis执行文件事件:执行用户命令,并将该命令缓存于Server.aof_buf中{函数1}
1.2. Redis执行时间时间的ServerCron:依据参数server.aof_flush_postponed_start,{函数4}
1.2.1. 将redisServer.aof_buf写入文件Server.aof_fd。
1.2.2. 该文件何时fsync到磁盘有三种机制:
AOF_FSYNC_EVERYSEC 每秒调用...
分类:
其他好文 时间:
2014-09-14 19:23:57
阅读次数:
402
今天在看redis源码的时候发现这样的一种函数定义方法,就是将函数作为类型来定义,然后在结构体当中使用 typedef void aeFileProc(struct aeEventLoop *eventLoop, int fd, void *clientData, int mask); typ...
分类:
其他好文 时间:
2014-09-10 13:55:30
阅读次数:
259
《Redis设计与实现》读书笔记 很喜欢这本书的创作过程,以开源的方式,托管到Git上进行创作; 作者通读了Redis源码,并分享了详细的带注释的源码,让学习Redis的朋友轻松不少; 阅读优秀的源码作品能快速的提升编码内功,而像Redis这样代码量不大(2万多行)却句句精致的作品,当然不能错过; ...
分类:
其他好文 时间:
2014-08-12 00:14:13
阅读次数:
263
原创文章,链接:
(I) connection.py
负责根据setting中配置实例化redis连接。被dupefilter和scheduler调用,总之涉及到redis存取的都要使用到这个模块。
(II) dupefilter.py
负责执行requst的去重,实现的很有技巧性,使用redis的set数据结构。但是注意scheduler并不使用其中用于在这个模块中实现的dupe...
分类:
其他好文 时间:
2014-07-28 16:10:23
阅读次数:
395
在项目中大量使用zincrby命令,原因就是要统计日志中某个指标的计数值,且需要按顺序返回topn。
正常来说,一个指标调用一次zincrby(zincrby default:type 1 typeA) 就可以正常工作。
实际情况是由于日志生成的太快,redis cpu利用率经常100%,而且还丢数据。
是否可以一次性增加多次指标的累计值,比如zincrby default:type 1 t...
分类:
其他好文 时间:
2014-07-16 16:43:55
阅读次数:
333
Redis 内部有个小型的事件驱动,它主要处理两项任务:
分类:
其他好文 时间:
2014-06-30 12:02:01
阅读次数:
208
dict 是redis中最重要的数据结构,存放结构体redisDb中。
分类:
其他好文 时间:
2014-06-28 16:35:44
阅读次数:
225
Ziplist是用字符串来实现的双向链表,对于容量较小的键值对,为其创建一个结构复杂的哈希表太浪费内存,所以redis 创建了ziplist来存放这些键值对,这可以减少存放节点指针的空间,因此它被用来作为哈希表初始化时的底层实现。
分类:
其他好文 时间:
2014-06-25 19:06:54
阅读次数:
187
这是redis的内存管理接口。zmalloc,zcalloc,zrealloc和zfree分别对应c库中的malloc,calloc,realloc和free。zstrdup用于生成一个字符串的拷贝。后面的几个函数用于获取内存使用信息,后面会详细介绍。
分类:
其他好文 时间:
2014-06-25 13:10:03
阅读次数:
295