[TOC]

准备好好学习下redis了
《Redis 设计与实现(第二版)》
redis-3.0.0 带中文注释代码
redis 最新版代码
准备跟书看,同时对比下最新版代码,最后运行调试看下。
博客还不知道会不会更新。。。。

环境安装

我个人习惯用vscode。

C/C++ 开发环境这里不展开了,参考这个搞下就行了

简单配置下就可以断点调试了

.vscode/launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
"version": "0.2.0",
"configurations": [
{
"name": "(redis-6.2.1) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/src/redis-server",
"args": ["${workspaceFolder}/redis.conf"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "build",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

.vscode/tasks.json

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "make",
"args": [
"CFLAGS=\"-g -O0\""
]
}
]
}

阅读内容

  • [ ] 数据结构

    • [ ] 基础数据结sdsß

      • [x] sds (sds.h, sds.c, sdsalloc.h)
      • [x] list (adlist.h adlist.c) 其实就是最基本的双向链表,不细看了。
      • [x] dict (dict.h, dict.c)
      • [x] zkiplist (server.h, server,c)
      • [x] intset (intset.h, inset.c)
      • [x] ziplist (ziplist.h, ziplist.c)
      • [ ] zipmap(zipmap.h, zipmap.c)
      • [ ] quicklist (quicklist.h, quicklist.c)
    • [ ] 外部数据结构(各类对象)

      • [ ] 对象的类型和编码
      • [ ] 字符串对象
      • [ ] 列表对象
      • [ ] 哈希对象
      • [ ] 集合对象
      • [ ] 有序集合对象
      • [ ] 模块对象
      • [ ] 流对象
    • [ ] 特殊结构

      • [ ] GEO
      • [ ] HyperLogLog
  • [ ] 单机数据库的实现

    • [ ] 数据库
    • [ ] RDB持久化
    • [ ] AOF 持久化
    • [ ] 时间
    • [ ] 客户端
    • [ ] 服务器
  • [ ] 多机数据库的实现

    • [ ] 复制
    • [ ] Sentinel (哨兵)
    • [ ] 集群
  • [ ] 独立功能实现

    • [ ] 发布与订阅
    • [ ] 事务
    • [ ] lua脚本
    • [ ] 排序
    • [ ] 二进制位数组
    • [ ] 慢查询日志
    • [ ] 监视器