今天开始研究Redis源码中的一些工具类的代码实现,工具类在任何语言中,实现的算法原理应该都是一样的,所以可以借此机会学习一下一些比较经典的算法。比如说我今天看的Crc循环冗余校验算法和rand随机数产生算法。
CRC算法全称循环冗余校验算法。CRC校验的基本思想是利用线性编码理论,在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的监督码(既CRC码)r位...
分类:
编程语言 时间:
2014-10-29 10:52:12
阅读次数:
213
上次我只分析了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
我们知道Redis数据库作为一个内存数据库,与memcached比较类似,基本的操作都是存储在内存缓冲区中,等到缓冲区中数据满后,在持久化到磁盘中。今天,我主要研究了对于redis中对于内存数据库的操作。与普通的数据操作比较,并没有什么特别多的其他的一些操作。下面是我分类出的一些API:
/*----------------------------------------------------...
分类:
数据库 时间:
2014-10-24 22:23:07
阅读次数:
401
redis作为一非关系型数据库,竟然同样拥有与RDBMS的事务操作,不免让我觉得比较惊讶。在redis就专门有文件就是执行事务的相关操作的。也可以让我们领略一下,在Redis的代码中是如何实现事务操作。首先亮出mulic.c下面的一些API。
/* ================================ MULTI/EXEC ==============================...
分类:
其他好文 时间:
2014-10-23 10:45:46
阅读次数:
280
每个系统都会有类似一个config配置文件,config文件里的内容想想都知道,一定就是那么一些固定的一行行的属性代码了,今天在看redis代码中的config属性,那拉下来的一笔,的确多,目测在50至100个属性左右。如果就此将config每个属性代表什么意思不是我的风格,也一定是很乏味的,所以我的特点就是在代码中去理解程序员在写这类代码时的思路,和茫茫代码中的亮点。我们知道,redis运行的环...
分类:
其他好文 时间:
2014-10-22 22:09:42
阅读次数:
216
这次研究了一下intset,研究的过程中,一度看不下过去,但是还是咬牙tingg...
分类:
其他好文 时间:
2014-10-21 21:33:58
阅读次数:
347
继续学习redis源码下的Data数据相关文件的代码分析,今天我看的是一个叫aof的文件,这个字母是append ONLY file的简称,意味只进行追加文件操作。这里的文件追加记录时为了记录数据操作的改变记录,用以异常情况的数据恢复的。类似于之前我说的redo,undo日志的作用。我们都知道,redis作为一个内存数据库,数据的每次操作改变是先放在内存中,等到内存数据满了,在刷新到磁盘文件中,达...
分类:
移动开发 时间:
2014-10-20 21:29:33
阅读次数:
344
最近在项目有用到redis,所以在看redis的源码,接下来打算把redis的整体情况都介绍下,会逐渐写redis源码的相关功能,不过,做什么东西之前,都应该考虑它的优点和缺点,所以,先写redis的优点和缺点。redis是一个key-value存储系统,数据存储在内存中,它的优点主要如下:1.支..
分类:
其他好文 时间:
2014-10-20 02:10:37
阅读次数:
910