7.1 Redis源码下载与编译

  Redis源码下载与编译在前面已经说过了,同学们可以去第04课:GDB常用命令详解(上)学习。

  编译成功后,会在src目录下生成多个可执行程序,其中redis-server和redis-cli使我们即将调试的程序,进入src目录,使用GDB启动redis-server这个程序。

wzq@wzq-PC:~/Desktop/redis-5.0.3/src$ gdb redis-server
GNU gdb (Debian 7.12-6+b2) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from redis-server...done.
(gdb) r
Starting program: /home/wzq/Desktop/redis-5.0.3/src/redis-server
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
8073:C 14 Jan 2019 10:30:29.039 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8073:C 14 Jan 2019 10:30:29.039 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=8073, just started
8073:C 14 Jan 2019 10:30:29.040 # Warning: no config file specified, using the default config. In order to specify a config file use /home/wzq/Desktop/redis-5.0.3/src/redis-server /path/to/redis.conf
8073:M 14 Jan 2019 10:30:29.040 * Increased maximum number of open files to 10032 (it was originally set to 1024).
[New Thread 0x7ffff67ff700 (LWP 8077)]
[New Thread 0x7ffff5ffe700 (LWP 8078)]
[New Thread 0x7ffff57fd700 (LWP 8079)]_._                                                  _.-``__ ''-._                                             _.-``    `.  `_.  ''-._           Redis 5.0.3 (00000000/0) 64 bit.-`` .-```.  ```\/    _.,_ ''-._                                   (    '      ,       .-`  | `,    )     Running in standalone mode|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379|    `-._   `._    /     _.-'    |     PID: 8073`-._    `-._  `-./  _.-'    _.-'                                   |`-._`-._    `-.__.-'    _.-'_.-'|                                  |    `-._`-._        _.-'_.-'    |           http://redis.io        `-._    `-._`-.__.-'_.-'    _.-'                                   |`-._`-._    `-.__.-'    _.-'_.-'|                                  |    `-._`-._        _.-'_.-'    |                                  `-._    `-._`-.__.-'_.-'    _.-'                                   `-._    `-.__.-'    _.-'                                       `-._        _.-'                                           `-.__.-'                                               8073:M 14 Jan 2019 10:30:29.042 # Server initialized
8073:M 14 Jan 2019 10:30:29.042 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
8073:M 14 Jan 2019 10:30:29.042 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
8073:M 14 Jan 2019 10:30:29.042 * Ready to accept connections

  以上是redis-server启动成功后的画面。

  我们再开一个session,再次进入Redis源码所在的src目录,然后使用GDB启动Redis客户端redis-cli:

wzq@wzq-PC:~/Desktop/redis-5.0.3/src$ gdb redis-cli
GNU gdb (Debian 7.12-6+b2) 7.12.0.20161007-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from redis-cli...done.
(gdb) r
Starting program: /home/wzq/Desktop/redis-5.0.3/src/redis-cli
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
127.0.0.1:6379>

  以上是redis-cli启动成功后的画面。

7.2 通信示例

  本课程的学习目的是研究Redis的网络通信模块,为了说明问题方便,我们使用一个简单的通信实例,即通过redis-cli产生一个可以为“hello”,值为“world”的key-value数据,然后得到redis-server的响应。

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379>

  读者需要注意的是,我这里说是一个“简单”的实例,其实并不简单。有两个原因:

  -我们是在redis-cli(Redis客户端)输入的命令,这个命令经redis-cli处理后封装成网络通信包,通过客户端的网络通信模块发给redis-server,然后redis-server网络通信模块收到后解析出命令,执行命令后得到结果再封装成相关的网络数据包,返回给redis-cli。这个过程中涉及到两端的网络通信模块使我们研究和学习的重点。

  -redis-server基本的数据类型都是可以通过类似的命令产生,因此这个例子是一个典型的研究redis的典范。

7.3小结

  这节课介绍了我们利用调试Redis源码来学习GDB的一些准备工作和实例代码,有兴趣的读者可以根据本节课中介绍的内容准备一些学习材料,以备后面的进一步学习,从下一课开始我们正式利用GDB来调试Redis。

  

转载于:https://www.cnblogs.com/wzqstudy/p/10265722.html

第07课:【实战】调试Redis准备工作相关推荐

  1. 第07课:基于 Redis 的分布式锁实现及其踩坑案例

    分布式锁的实现,目前常用的方案有以下三类: 数据库乐观锁: 基于分布式缓存实现的锁服务,典型代表有 Redis 和基于 Redis 的 RedLock: 基于分布式一致性算法实现的锁服务,典型代表有 ...

  2. 第四课 实战go语言改造php仿优酷-Redis改造优化接口

    第四课 实战go语言改造php仿优酷-Redis改造优化接口 tags: Beego 慕课网 categories: redis 文章目录 第四课 实战go语言改造php仿优酷-Redis改造优化接口 ...

  3. 《微课实战:Camtasia Studio入门精要》——第2章 录制视频 2.1 录制视频基本常识...

    本节书摘来自异步社区<微课实战:Camtasia Studio入门精要>一书中的第2章,第2.1节,作者 于化龙,沈婷婷,郝雨,更多章节内容可以访问云栖社区"异步社区" ...

  4. 第五课 实战go语言改造php仿优酷-RabbitMQ改造项目

    第五课 实战go语言改造php仿优酷-RabbitMQ改造项目 tags: Beego 慕课网 categories: RabbitMQ 五种工作模式 文章目录 第五课 实战go语言改造php仿优酷- ...

  5. redis(二)redis实战 使用redis进行文章的排序

    2019独角兽企业重金招聘Python工程师标准>>> http://www.beckbi.cn/?p=172 redis实战使用redis进行文章的排序 转载于:https://m ...

  6. html5--6-68 实战前的准备工作:了解HTML5大纲算法

    html5--6-68 实战前的准备工作:了解HTML5大纲算法 学习要点 了解HTML5大纲算法 在html5中有一个很重要的概念,叫做HTML5大纲算法(HTML5 Outliner),它的用途为 ...

  7. ide在控制台输入编译命令_快速编译调试 Redis

    一:开篇 Redis 它是个宝,男女老少都说好.秒杀限流分布式,什么需求都能搞. Redis 主要的用途是分布式缓存,其实不用我多介绍,相信大家都用过Redis.之前也看过不少Redis的书,其中就包 ...

  8. 1 企业实战(3) Redis服务部署和配置详解 (资源)

    前言: 环境介绍: CentOS 7.5 Redis 5.0.0 gcc 下载: http://download.redis.io/releases/ 安装redis: [root@localhost ...

  9. Jmeter对Web Socket进行压力测试 —— 200人直播课实战经验

    转载 Jmeter对Web Socket进行压力测试 -- 200人直播课实战经验 分类专栏: Jmeter 测试经验 Web Socket 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-S ...

最新文章

  1. 基础篇-verilog-单路串行ADC-TLC549
  2. golang的GUI库,使用go-fyne设计一个代办事项APP
  3. Python基础之 Django视图和 URL 配置
  4. 论文翻译《Object-Level Ranking: Bringing Order to Web Objects》
  5. Java二维数组谷电,java二维数组遍历的2种代码
  6. java 匿名类型_Java之匿名类讲解
  7. ECCV 2020 | 可解释和泛化的行人再辨识
  8. Cookie工具类的借鉴别人的ThinkGem的代码学习
  9. 类c语言实验报告,内蒙古工业大学 C语言实验报告
  10. SELECT 基本语法结构
  11. 今天同学跟我说刚入门前端,想到我目前实习的公司涨涨经验
  12. Ubuntu 下安装 GCC 的方法
  13. 马里兰帕克分校计算机研士排名,2020年马里兰大学帕克分校QS世界排名
  14. CVPR2020|3D目标检测算法推荐论文源码大盘点
  15. mac 卸载php版本,mac 系统下删除旧的php版本安装最新的php版本及Xdebug
  16. python怎么输出所有奇数_python输出100以内奇数的几种输出方式-Go语言中文社区
  17. 从Java 9 到 Java 17之Java 11
  18. 从Q4财报看百度破局BAT,借智能云“化茧成蝶”仰望星辰大海
  19. hook(2)Activity启动流程,涨知识
  20. 计算机考研之方向解读

热门文章

  1. :Windows下RabbitMQ安装及入门
  2. 专 linux命令之set x详解
  3. 动态输出html一些效果失效的处理
  4. 7月13日微软MVP社区夏日巡讲北京站活动现场图集
  5. 一些常用的IHTMLXX接口
  6. 既可输入又可选择的组件
  7. C++类模板特化全总结
  8. 循环节模板 NOJ427Number Sequence
  9. 蜂鸟智游大数据:为什么出国购物慢慢“OUT”了?
  10. 阿里云服务器Svn-Server无法连接,阿里云服务器SVNServer配置