- 博客(5)
- 资源 (2)
- 收藏
- 关注
原创 Redis2.2.2源码学习——信号的处理
Redis对信号的处理如下:1)忽略的信号:SIGHUP(终端session关闭)、SIGPIPE(管道错误)2)出错相关信号:SIGSEGV SIGBUS SIGFPE SIGILL 处理方式:触发段错误的处理函数中, 1.主要将错误信息写入日志 2.将该信号处理信号设置为默认,重新在本身发送该信号(执行信号的默认处理)3)进程结束信号:SIGTERM(该信号用于请求中止进程,kill命令缺省发送) 1.server.shutdown_asap = 1; 和程序出错信号相比,SI
2013-10-17 20:26:47 2883 2
原创 Redis2.2.2源码学习——dict中的hashtable扩容和rehash
dict是Redis的hash表结构,所有类型的元素都可以依据key值计算hashkey,然后将元素插入到dict的某个hash链上(采用拉链发解决hash冲突)。其中,dict的总hashtable的扩容是dict很重要的部分。Redis的“管家”函数serverCron会依据一定的算法(dict中的used与size的比值)判定是否开始进行hashtable的扩容。扩容之后,hashtalbe的长度将变长,那么hashtalbe的masksize与原来的makssize就不同了,那么计算出的hashke
2013-10-17 13:35:18 4929 2
原创 Redis2.2.2源码学习——aeEvent事件轮询
Version Redis2.2.2Redis的事件主要分为文件事件和定时器时间,作者对这两种事件处理的高端之处在于预先计算最近一个要超时的定时器距离当前的事件间隔,在这个时间间隔内调用poll函数处理文件事件,之后再处理定时器时间。/* File event structure */typedef struct aeFileEvent { int mask; ///* 文件事件类型 读/写 one of AE_(READABLE|WRITABLE) */ aeFilePro
2013-10-16 21:09:12 5505 2
原创 epoll()学习
前言Redis源码中的文件事件轮询,对于linux采用了epoll而非select。故而对epoll产生了兴趣,查资料发现原来epoll比select高效不少。下面是看了几篇文章的一点心得。目前还没真正的看epoll源码,看起来源码比select复杂,等以后有时间在好好啃一啃。几个关键点1. epoll是linux独有的。2. 系统启动的时候,会构建特殊的文件系统。 epf
2013-10-19 14:28:47 1069
树形文件系统--slp
2012-06-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人