当前位置: 首页 > news >正文

调试环境搭建(Redis 6.X 版本)

今儿,我们来搭建一个 Redis 调试环境,目标是:

  • 启动 Redis Server ,成功断点调试 Server 的启动过程。
  • 使用 redis-cli 启动一个 Client 连接上 Server,并使用 get key 指令,发起一次 key 的读取。
    视频可见 B 站:https://www.bilibili.com/video/BV12X4y1c79z

依赖工具

CLion

下载地址:https://www.jetbrains.com/clion
CLion 是 Jetbrains 团队提供的 C/C++ 开发工具。所以,所以和我们平时使用的 IDEA 差别不大。
这里使用的是 CLion 版本是 2021.1.3 。

源码拉取

使用 CLion 从官方仓库 https://github.com/antirez/redis 克隆项目。操作如下图所示:
gitee
在这里插入图片描述
这里,我们使用的 Redis 版本是 6.2.5。

导入项目

克隆完项目后,CLion 会进行 Importing 导入项目,耐心等待一下。如下图所示:
在这里插入图片描述

编译项目

导入完成后,打开 Makefile 文件,点击 default:all 绿色箭头,开始项目的编译。如下图所示:
在这里插入图片描述

运行 Redis Server

① 配置 Redis Server 的启动项,操作如下图所示:
在这里插入图片描述在这里插入图片描述
② 打开server.c文件,在 #main(...) 方法上,添加一个方法断点,它是 Redis Server 的启动入口。如下图所示:
在这里插入图片描述
③ Debug 右上方的 redis-server 启动项,成功进入 #main(…) 方法的断点。如下图所示:

在这里插入图片描述
至此,我们已经完成了我们的第一个小目标“启动 Redis Server ,成功断点调试 Server 的启动过程”。

点击左下方的绿色小箭头,恢复 Redis Server 的启动,不然等会 Redis Client 都连接不上来。在 CLion 的控制台,我们会看到 Redis Server 启动成功的日志如下:

22315:M 28 Jul 2021 01:23:37.535 # Server initialized
22315:M 28 Jul 2021 01:23:37.535 * Ready to accept connections
运行 Redis Client

① 打开 ae.c 文件,在 #aeProcessEvents(...) 方法的如图处,打上一个端点,用于调试 Redis Server 处理各种来自 Redis Client 的 IO 事件。如下图所示:
在这里插入图片描述
② 打开 IDE Terminal,运行 redis-cli 启动一个 Redis Client,连接上 Redis Server。如下图所示:
在这里插入图片描述
此时,我们在 ae.c #aeProcessEvents(...)的断点成功进入,Redis Server 收到 Redis Client 的连接事件。

打开 Debug 窗口,点击左下方的绿色小箭头,恢复 Redis Server 的执行。

③ 回到redis-cli命令行,输入 get key 指令,向 Redis Server 发起一次 get 请求。效果如下图所示:
在这里插入图片描述
此时,我们在 ae.c #aeProcessEvents(...) 的断点又一次进入,Redis Server 收到 Redis Client 的 get 请求。

至此,我们已经完成了我们的第二个小目标“使用 redis-cli 启动一个 Client 连接上 Server,并使用 get key 指令,发起一次 key 的读取”。

源码解析

Redis 源码是使用 C 实现的,对于 Java 程序员的我们来说,还是有一定“门槛”的,所以最好借助下市面上 Redis 相关的书籍。
① 《Redis 设计与实现》,针对 Redis 3.X 版本,豆瓣评分 8.6 分,对应详细注释的 Redis 仓库 链接: https://pan.baidu.com/s/1I-TtD22NRnBZiKBIURYr7w 提取码: wfdm
② 《Redis5设计与源码分析》,针对 Redis 5.X 版本,豆瓣评分 6.8 分。
链接: https://pan.baidu.com/s/1y3Kjwi70h2PiHoIctmBJgw 提取码: stah
③ 《Redis源码剖析与实战》,针对 Redis 版本不详,极客时间 2021 年出的,可能是 Redis 6.X 版本。
④ 《Redis核心技术与实战》

http://www.lryc.cn/news/367216.html

相关文章:

  • postgres数据库报错无法写入文件 “base/pgsql_tmp/pgsql_tmp215574.97“: 设备上没有空间
  • 力扣2762. 不间断子数组
  • OpenCV学习(4.8) 图像金字塔
  • 【TB作品】msp430f5529单片机,dht22,温湿度传感器,OLED显示屏
  • Kotlin 异常处理
  • nltk下载报错
  • Vulnhub-DC5
  • pytorch 笔记:pytorch 优化内容(更新中)
  • vue 创建一个新项目 以及 手动配置选项
  • c#快速获取超大文件夹文件名
  • 华为OD技术面试-最小异或-2024手撕代码真题
  • 基于SpringBoot+Vue单位考勤系统设计和实现(源码+LW+调试文档+讲解等)
  • Anaconda软件:安装、管理python相关包
  • pinia 重置状态插件
  • 一千题,No.0049(跟奥巴马一起编程)
  • 《python程序语言设计》2018版第5章第46题均值和标准方差-上部(我又一次被作者的出题击倒)
  • 自己做的精灵图制作,图片合成,卓宠,窗口置顶,磁力链下载等工具软件
  • C++协程
  • linux系统——ping命令
  • vue3第三十七节(自定义插件之自定义指令)防重指令
  • 面试高频问题----5
  • 计算机网络 —— 网络层(子网掩码和子网划分)
  • 2024 IDEA最新永久使用码教程(2099版)
  • http协议,tomcat的作用
  • 有哪些针对平台端口的常见攻击手段
  • Xcode下载安装
  • 【 k8s 标签与选择器 】
  • 【模拟-BM99 顺时针旋转矩阵】
  • 今年618,京东和爱奇艺为大屏品质“把关”
  • NSS题目练习7