如何高效深入的阅读Redis的redis源码阅读

当前位置: &
【正版全新】Redis设计与实现(资深Redis技术专家撰写,深入了解Redis技术内幕的必读之作。从源码角度解析Redis的架构设计、实现原理和工作机制,为高效使用Redis提供原理性指导)
滚动鼠标滚轴,图片即可轻松放大、缩小
【正版全新】Redis设计与实现(资深Redis技术专家撰写,深入了解Redis技术内幕的必读之作。从源码角度解析Redis的架构设计、实现原理和工作机制,为高效使用Redis提供原理性指导)(图1)
电&&&&&&话:
开&&&&&&本:16开
页&&&&&&数:388页
字&&&&&&数:277千字
I&&S&&B&&N:7
售&&&&&&价:56.90元
Copyright(C)
孔夫子旧书网
京ICP证041501号
海淀分局备案编号阅读redis源代码的一些体会最近在学习redis及阅读redis等程序的源码时,有一些收获,特记录到下面。1.第一步,阅读源代码借助最好可以跟踪的工具去读,如sourceinsight。我使用的是windows7环境,又因为是c程序,故使用sourceinsight,当然还有其他的方式,比如阅读java代码可以导入到eclipse。2. 第二步,搭建可以启动该源程序的环境,并能启动成功。根据最简单的配置,使用源码编译的方式,启动该程序。逐渐参考用户使用手册,修改配置文件进行测试,进而熟悉redis的使用。3.第三步,阅读代码前先理清楚源码的数据结构、基本概念、算法。 数据结构诸如字典、双向链表的实现; 概念诸如aof、rdb、主从复制等4. 第四步,使用debug模式启动程序,跑完整个流程。 使用redis的debug模式,了解运行的流程,理清思路。5. 第五步,使用单元测试对数据结构、算法、流程进行单元测试。 使用cunit先进行数据结构的单元测试,再进行算法,然后是流程的测试。 最后考虑根据模块进行测试。 以上内容出自:/davidwang456/p/3552409.html增加一条:6、增加打印日志和画代码流程图。1)猜测你认为的代码流程走向,并在你认为走到的地方增加自己的打印信息,运行程序,看看是否可以达到预期。整个和调 试BUG时用到的原理一样,重要的一点是你要先判断哪个地方会调用,自己去主导代码。2)画代码流程图,根据你已经熟悉的流程,把代码流程图画下来,方便自己整理思路,也能预防阅读到后面忘记了前面的码。图形的表现会远大于文字,大部分人刚开始都不愿意去画,包括我,后来感觉还是很有必要的。学习redis的相关资料:1. 《Redis入门很简单》2. 《Redis设计与实现》这两本书都看完了,感觉挺好的,昨天有入手了一本《Redis实战》还没看,本想入手一本英文的,奈何比中文版贵了好几倍。看完这些书并应用起来后,上面的第一、二、三步应该就没OK啦。官网推荐的书(http://redis.io/documentation)如下:BooksThe following is a list of books covering Redis that are already published. Books are ordered by release date (newer books first). Redis in Action (Manning, 2013) by Josiah L. Carlson (early access edition). Instant Redis Optimization How-to (Packt, 2013) by Arun Chinnachamy. Instant Redis Persistence (Packt, 2013) by Matt Palmer. The Little Redis Book (Free Book, 2012) by Karl Seguin is a great free and concise book that will get you started with Redis. Redis Cookbook (O'Reilly Media, 2011) by Tiago Macedo and Fred Oliveira.The following books have Redis related content but are not specifically about Redis: Seven databases in seven weeks (The Pragmatic Bookshelf, 2012). Mining the Social Web (O'Reilly Media, 2011) Professional NoSQL (Wrox, 2011)4. 第四步,在redis.conf中需要配置一下loglevel为debug,如下:# Specify the server verbosity level.# This can be one of:# debug (a lot of information, useful for development/testing)# verbose (many rarely useful info, but not a mess like the debug level)# notice (moderately verbose, what you want in production probably)# warning (only very important / critical messages are logged)loglevel debug# Specify the log file name. Also the empty string can be used to force# Redis to log on the standard output. Note that if you use standard# output for logging but daemonize, logs will be sent to /dev/nulllogfile "./log/redis_log.txt"5. 下载最新版本的redis(3.2.0)会在main.c里面看到比以往版本中多加了测试代码:#ifdef REDIS_TEST
if (argc == 3 && !strcasecmp(argv[1], "test")) {
if (!strcasecmp(argv[2], "ziplist")) {
return ziplistTest(argc, argv);
} else if (!strcasecmp(argv[2], "quicklist")) {
quicklistTest(argc, argv);
} else if (!strcasecmp(argv[2], "intset")) {
return intsetTest(argc, argv);
} else if (!strcasecmp(argv[2], "zipmap")) {
return zipmapTest(argc, argv);
} else if (!strcasecmp(argv[2], "sha1test")) {
return sha1Test(argc, argv);
} else if (!strcasecmp(argv[2], "util")) {
return utilTest(argc, argv);
} else if (!strcasecmp(argv[2], "sds")) {
return sdsTest(argc, argv);
} else if (!strcasecmp(argv[2], "endianconv")) {
return endianconvTest(argc, argv);
} else if (!strcasecmp(argv[2], "crc64")) {
return crc64Test(argc, argv);
return -1; /* test not found */
}#endif如果需要测试以上的数据结果需要在makefile文件中,添加相关预编译:FINAL_CFLAGS+= -DREDIS_TEST至于如何使用cunit进行白盒测试,还不清楚。
使用&a&标签,连接到另外一个
最新教程周点击榜
微信扫一扫相关文章推荐:
django redis cache
如何创建状态页URL
您需要创建一个简单的php页面,并且将php页面放致可以访问的路径,需要您的环境已经安装php-redis module,
点击 文件下载 链接可以获取到该PHP页面的ZIP包,解压后您会得到redis_status.php。
接下来我们编辑这个文件的以下行:
// 此处配置主机参数
$Rhost='192.168.0.146';
//此处配置端口参数
$Rport='6379';
编辑好了保存起来,将该文件放置可以访问的路径就可以调用指定服务器redis的数...
阅读(1022) 回复(0)
其他文章推荐
cachecache n. 高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁访问的 RAM 位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM 存储器速度快,所以当 RAM 的访问速度低于微处理...
阅读(1210) 回复(0)
目前看到的方法都是依靠从接管,然后通过一个脚本恢复主
请问下有没有互为主从的,设想是这样的
1. A 、B 依次启动,A作为主、B为从
2.主A 挂掉,B接管业务,作为主
3.A 起来,作为从SLAVEOF B
4.B 挂掉,A 切回主
在keepalive里主设置了 state BACKUP;nopreempt
从设置了 state BACKUP
接下来进行测试发现A关闭redis, B作为主接管了
但是A起来后,还是master,结果变成2个master了
是不是redis的配置文件要设置什么呢
阅读(956) 回复(3)
本文内容来源于 redis 的官方文档,对 redis 自己的应用层协议进行了详细深入的讲解,由@JeremyWei 同学进行翻译并分享给大家。
原译文链接:http://weizhifeng.net/redis-protocol.html
redis协议是从以下几个方面做的一个折中方案:
机器解析要快
容易被人理解
网络层客户端通过创建到6379端口的TCP连接来连接到一个redis服务器。每个redis命令或者客户端和服务器之间传输的数据都以\r\n (CRLF)结束。
请求redis可以接...
阅读(1279) 回复(0)
我现在想在64位gentoo linux系统上,安装32位的redis。请教一下,这个怎么安装。
阅读(1379) 回复(0)
redis是运用比较广泛的NoSQL产品之一,目前的稳定版本是2.6.10,包括Github、Instagram、Blizzard、新浪微博等都在产品中大量使用了redis。其代码基于BSD协议开源,整个项目代码量只有2万多行(2.2版本),大家可以通过阅读代码在相对短的时间内学习到作者的设计理念和redis的实现方式,做到知其然知其所以然。
日前黄健宏(
)发布了开源文档
《redis设计与实现》
,这是一份从阅读源代码入手来学习redis的笔记...
阅读(1072) 回复(0)
redis作者谈redis应用场景
毫无疑问,redis开创了一种新的数据存储思路,使用redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。
下面是一篇新鲜出炉的文章,其作者是redis作者@antirez,他描述了redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览:
1.取最新N个数据...
阅读(2308) 回复(1)
深入redis内部-redis 源码讲解
redis 作为 NoSQL 数据库的杰出代表,一直广受关注,其轻量级的敏捷架构,向来有存储中的瑞士军刀之称。下面推荐的一篇文章,从源码的角度讲解了redis 的整个工作流程,是了解 redis 流程的绝佳文章。强烈推荐:
原文链接:redis: under the hood
Beginning global server state initialization
Setting up command table
Loading config file
initServer()
Shared ob...
阅读(2421) 回复(1)
大家好,小弟初用django,想用它来完成一个GUI界面,里面的功能也很简单,就是把后台需要配置的文件展现在GUI界面里,直接通过界面配置,并保存生效。在网上查了半天没有类似的例子,网上看到的多半是投票或者blog系统。请教大家有谁做过类似的东东,有没有可参考的资料,多谢!!!
阅读(1001) 回复(2)
观影感:Powerful force leads to justice
对待那些喷我的喷子,要让这种狗学会尊重人,就得给它来些实实在在的让它拒绝不了的! :em17:
阅读(32) 回复(1)
阅读(581) 回复(0)
盛拓传媒:
北京皓辰网域网络信息技术有限公司. 版权所有
北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证:编号(京)字第1149号
ITPUB推荐文章解答你所有技术难题}

我要回帖

更多关于 redis 高效频繁读取 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信