为了账号安全,请及时绑定邮箱和手机立即绑定

目录

手机
阅读

扫一扫 手机阅读

准备工作

限时优惠 ¥ 29.90

原价 ¥ 39.90

02月24日后恢复原价

立即订阅
准备工作
作者:陈雷 字数:1457 更新时间:2019-01-25 13:53:36

本专栏分为上下两篇,上篇包含第 2~7 节,主要讲解了Redis源码中基本的数据结构,包括简单动态字符串(SDS)、跳跃表(SkipList)、压缩列表(ZipList)、字典(Dict)、整数集(intset)以及快速列表(quicklist)。这些基本数据结构是Redis底层的基础,Redis的相关功能和命令都是基于这些数据结构实现的。

下篇包含第 8~16 节,其中第8节详细讲解了Redis命令执行的生命周期,从客户端到服务端,服务端解析命令、执行、返回客户端的整体过程,这是Redis命令原理的核心,需要重点理解。第 9~16 节讲解了Redis中常用命令的实现,具体包括键命令(Key)、字符串命令(String)、哈希表命令(Hash)、列表命令(List)、集合命令(Set)、有序集合命令(Sorted Set)、地理位置命令(GEO)和日志命令(HyperLogLog)。

源码版本

本专栏使用的是Redis 4.0.9版本, 下载地址为:https://github.com/antirez/redis/archive/4.0.9.tar.gz。

准备工作

下载

wget https://github.com/antirez/redis/archive/4.0.9.tar.gz

解压缩

tar -zxvf redis-4.0.9.tar.gz

编译

为了方便我们后面调试,防止编译器优化,需要先修改Makefile里面的配置参数,如下:

cd redis-4.0.9/src
vim Makefile

将下面的配置

OPTIMIZATION?=-O2

修改为:

OPTIMIZATION?=-O0

然后进行编译:

make

此时读者会发现在src目录下产生了几个可执行程序:

redis-server redis-cli redis-benchmark redis-check-rdb redis-check-aof redis-sentinel

我们后续使用的主要是redis-server和redis-cli。

调试

推荐使用gdb进行调试,这样可以更加深刻地理解Redis的原理,具体有两种方式,一是通过gdb启动Redis,如下:

gdb ./redis-server

另一种方式是以gdb进程的方式处理,具体如下:

  1. 启动server:
./redis-server &
  1. 通过ps获取redis-server的pid:
ps aux | grep redis-server
root     14501  0.1  0.7 145308  7976 ?        Sl   05:56   1:04 ./redis-server *:6379
  1. gdb进程,并在需要研究的位置打上断点:
gdb -p 14501
b setCommand
  1. 通过redis-cli访问server:
./redis-cli 
127.0.0.1:6379>set key 1

Start Up!

好了,准备就绪,让我们一起开启Redis源码和原理的学习之旅吧。

}

此小节为试读小节,订阅后立即解锁全部内容

立即订阅 ¥ 29.90
Redis命令实现源码分析
立即订阅 ¥ 29.90

举报

0/150
提交
取消
意见反馈 去赚学费 帮助中心 APP下载
官方微信