1.4 Redis安装与调试
我们以Linux环境为例来进行安装。
通过网址http://download.redis.io/releases/可以获得各个版本的Redis源码,本书以Redis 5.0为例,下载源码包并编译安装(源码包URL为http://download.redis.io/releases/redis-5.0.0.tar.gz)。
$ wget http://download.redis.io/releases/redis-5.0.0.tar.gz $ tar -zxvf redis-5.0.0.tar.gz $ cd redis-5.0.0 $ make $ cd src $make install
到此,我们完成了Redis 5.0的编译安装,生成的可执行文件在/usr/local/bin目录中:
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
其中redis-benchmark是官方自带的Redis性能测试工具;当AOF文件或者RDB文件出现语法错误时,可以使用redis-check-aof或者redis-check-rdb修复;redis-cli是客户端命令行工具,可以通过命令redis-cli -h {host} -p {port}连接到指定Redis服务器;redis-sentinel是Redis哨兵启动程序;redis-server是Redis服务端启动程序。
例如,使用redis-server启动服务端程序(默认监听端口是6379):
$ /usr/local/bin/redis-server
使用redis-cli连接Redis服务器并添加键值对:
$ redis-cli -h 127.0.0.1-p 6379 127.0.0.1:6379> set name zhangsan OK 127.0.0.1:6379> get name "zhangsan"
GDB是一个由GNU开源组织发布的、UNIX/Linux操作系统下的、基于命令行的、功能强大的程序调试工具。下面我们演示如何通过GDB来调试Redis。
用GDB启动redis-server服务端程序:
$ gdb /usr/local/bin/redis-server (gdb)
使用b命令在main函数入口增加断点:
(gdb) b main Breakpoint 1 at 0x427770: file server.c, line 4000.
使用r命令运行:
(gdb) r Starting program: /usr/local/bin/redis-server [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib64/libthread_db.so.1". Breakpoint 1, main (argc=1, argv=0x7fffffffe528) at server.c:4000 4000 int main(int argc, char **argv)
从上面的输出中可以看到,代码执行到main函数停止。接下来,使用n命令执行下一步:
(gdb) n 4034 spt_init(argc, argv);
使用p命令查看某个变量的信息:
(gdb) p argc $1 = 1
这里只是简要介绍使用GDB调试Redis程序的方法,更多GDB的使用技巧有待读者去研究。
当然,还可使用很多方便的源码阅读工具阅读代码。例如,Windows环境下有一款功能强大的IDE(集成开发环境)——Source Insight,内置C++代码分析功能;同时能自动维护项目内的符号数据库,非常方便。另外,Mac平台下功能强大的IDE(集成开发环境)—Understand具备代码依赖、图形化等实用功能。Linux环境下可以使用Vim + Ctags来阅读代码,其中Ctags是Vim下阅读代码的一个辅助工具,可以生成函数、类、结构体、宏等语法结构的索引文件,使用方法也非常简单。读者可以自行学习这些源码阅读工具的具体安装教程,这里不再赘述。