上次刚刚分析过了客户端的结构体分析,思路比较简答,清晰,最后学习的是服务端的实现,服务端在Redis可是重中之重,里面基本上囊括了之前模块中涉及到的所有知识点,从redis的头文件就可以看出了,redis.h代码量就已经破1000+行了,而且都还只是一些变量,宏定义的声明,和一些方法原型的声明。所以,今天的总结跟昨天一样,先不做具体的实现学习,先从全局的角度思考,服务端的整体设计思路,这从头文件的...
分类:
其他好文 时间:
2014-11-07 17:05:02
阅读次数:
149
今天学习完了命令行客户端的后续内容,整体感觉就是围绕着2个东西转,config和mode。为什么我会这么说呢,请继续往下看,客户端中的配置结构体和之前我们所学习的配置结构体,不是指的同一个概念,cli中的结构体除了基本的ip,Port端口号,还有就是各种mode的配置了。
/* Redis配置结构体 */
static struct config {
char *hostip;
...
分类:
其他好文 时间:
2014-11-07 11:25:06
阅读次数:
139
每当提到延时统计的时候,一定想到的一个名词就是”性能测试“,没错,在Redis的redis_benchmark文件中,的确用到了延迟文件中的相关信息。在Redis中的官方解释此文件:
/* The latency monitor allows to easily observe the sources of latency
* in a Redis instance using the LAT...
分类:
其他好文 时间:
2014-11-05 10:55:34
阅读次数:
363
I/O操作对于每个系统来说都是必不可少的一部分。而且I/O操作的好坏,在一定程度上也会影响着系统的效率问题。今天我学习了一下在Redis中的I/O是怎么处理的,同样的,Redis在他自己的系统中,也封装了一个I/O层。简称RIO。得先看看RIO中有什么东西喽:
struct _rio {
/* Backend functions.
* Since this functions ...
分类:
其他好文 时间:
2014-11-02 10:56:10
阅读次数:
166
在上篇文章中初步的分析了一下,Redis工具类文件中的一些用法,包括2个随机算法和循环冗余校验算法,今天,继续学习Redis中的其他的一些辅助工具类的用法。包括里面的大小端转换算法,sha算法在Redis中的实现和通用工具类算法util.c。
先来看看大小端转换算法,大小端学习过操作系统的人一定知道是什么意思,在不同的操作系统中,高位数字的存储方式存在,高位在前,低位在后,或是...
分类:
其他好文 时间:
2014-10-31 12:06:50
阅读次数:
227
Memcached还是Redis? 在现代高性能Web应用中这一直是个争论不休的话题。 在基于关系型数据库的Web应用需要提高性能时,使用缓存是绝大多数架构师的第一选择,自然,Memcached和Redis通常是优先选择。共同特征都是 key-value 形式的内存数据库都是NoSQL家族的数据管理...
分类:
系统相关 时间:
2014-10-30 07:04:06
阅读次数:
301
在使用Redis做缓存时,应用往往能得到非常高的性能。然而,如果配置不当,你将遇到很多令人头疼的问题,比如复制缓冲区限制、复制超时等。Redis提供了许多提高和维护高效内存数据库使用的工具。在无需额外配置应用层的前提下,Redis独特的数据类型、指令和命令调优就可以满足应用的需求,但是错误的配置,更...
分类:
其他好文 时间:
2014-10-29 16:25:11
阅读次数:
430
上次我只分析了Redis网络部分的代码一部分,今天我把networking的代码实现部分也学习了一遍,netWorking的代码更多偏重的是Client客户端的操作。里面addReply()系列的方法操作是主要的部分。光光这个系列的方法,应该占据了一半的API的数量。我把API分成了3个部分:
/* ------------ API ---------------------- */
void ...
分类:
Web程序 时间:
2014-10-28 17:58:26
阅读次数:
283
昨天非常轻松的分析完Redis的事件驱动模型之后,今天我来看看anet的代码,anet是Redis对于Client/Server的网络操作的一个小小封装。代码中对此文件的官方解释为:
/* anet.c -- Basic TCP socket stuff made a bit less boring
* 基于简单的基本TCP的socket连接后面的made a bit less boring这...
分类:
Web程序 时间:
2014-10-27 10:57:43
阅读次数:
716
事件驱动这个名词出现的越来越频繁了,听起来非常高大上,今天本人把Redis内部的驱动模型研究了一番,感觉收获颇丰啊。一个ae.c主程序,加上4个事件类型的文件,让你彻底弄清楚,Redis是如何处理这些事件的。在Redis的事件处理中,用到了epoll,select,kqueue和evport,evport可能大家会陌生许多。前面3个都是非常常见的事件,在libevent的事件网络库中也都有出现。作...
分类:
其他好文 时间:
2014-10-26 11:51:15
阅读次数:
268