Redis源码环境构建过程详解

Redis源码环境构建

​ 近日,蒋德钧新上了一门Redis源码剖析的课程,应好友沈架构师的邀请,又重拾起了Redis源码学习。不过作为正经的JAVA工程师,大概在大学毕业后再也没写过C语言的源码了(还是看过一些的)。搭建一个Redis阅读环境我都好意思写一篇博客记录一下了。

​ 不过,不是在windows环境下构建了,是在deepin系统下进行的构建,也许windows用户可以出门右拐了。本次搭建环境主要参考以下两篇windows搭建环境的博客:

https://juejin.cn/post/6924329599568445447

https://www.jb51.net/article/218312.htm

C语言环境

​ 大学时期,用过vc 6.0、 vs 2012等软件写过C++语言。也在linux上编译过c语言代码。linux环境下,自带有gcc,make工具。而在windows环境下,可以选择MinGW、cygwin提供编译环境,make、cmake可以用来执行makefile文件。

​ 不过呢,我用的是Linux系统嘛,也就没有C语言环境搭建的过程了。。。

C语言IDE

​ VC 6.0这样的老古董应该是只适合语言初学者来强行记忆自己的语法了吧。vs 2012安装包很大,在linux环境上有没有安装包还两说。这里选择的事jetbrains家族下的Clion。官网有提供安装包,当然,像Deepin提供了应用市场,也可以直接一键安装。

​ 第一次启动时,CLION就会让你选择C语言环境的执行器,当然它默认会扫描到,一路确认就行。

克隆源码

​ 打开Clion,选择 “get from version control”,直接键入URL:https://github.com/redis/redis.git 进行clone。

配置工程

makefile

在工程根目录,输入命令make对makefile进行执行:

wanglh@dark:~/CLionProjects/redis$ make
cd src && make all
make[1]: 进入目录“/home/wanglh/CLionProjects/redis/src”
    CC Makefile.dep
    CC adlist.o

当然,在工程里点击Makefile 文件,Clion也会提示你安装Makefile的插件 Makefile Support。 然后点击文件右侧绿色的执行键即可。

之后,就会在/src目录中生成许多.o文件。

配置DEBUG命令

在CLion右上角的窗口,点击Edit Run/Debug Configurations 进行如下配置(选择框进行选择即可):

Target选择redis-serverExecuteable选择redis-server

执行DEBUG

点击DEBUG按钮后,就会在DEBUG的CONSOLE出输出:

/home/wanglh/CLionProjects/redis/src/redis-server
19707:C 27 Jul 2021 23:24:49.989 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
19707:C 27 Jul 2021 23:24:49.989 # Redis version=255.255.255, bits=64, commit=17511df5, modified=0, pid=19707, just started
19707:C 27 Jul 2021 23:24:49.989 # Warning: no config file specified, using the default config. In order to specify a config file use /home/wanglh/CLionProjects/redis/src/redis-server /path/to/redis.conf
19707:M 27 Jul 2021 23:24:49.990 * monotonic clock: POSIX clock_gettime
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 255.255.255 (17511df5/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 19707
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           https://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'                                               

19707:M 27 Jul 2021 23:24:49.990 # Server initialized
19707:M 27 Jul 2021 23:24:49.990 # 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.
19707:M 27 Jul 2021 23:24:49.992 * Loading RDB produced by version 255.255.255
19707:M 27 Jul 2021 23:24:49.992 * RDB age 14593 seconds
19707:M 27 Jul 2021 23:24:49.992 * RDB memory usage when created 0.77 Mb
19707:M 27 Jul 2021 23:24:49.992 * DB loaded from disk: 0.000 seconds
19707:M 27 Jul 2021 23:24:49.992 * Ready to accept connections

这样就表示启动成功了,我们也可以用redis客户端,redis-cli进行验证:

wanglh@dark:~/CLionProjects/redis/src$ pwd
/home/wanglh/CLionProjects/redis/src
wanglh@dark:~/CLionProjects/redis/src$ ls -l redis-cli
-rwxr-xr-x 1 wanglh wanglh 6689040 7月  27 23:15 redis-cli
wanglh@dark:~/CLionProjects/redis/src$ redis-cli
127.0.0.1:6379> set a nn
OK
127.0.0.1:6379> get a
"nn"
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> 

到此这篇关于Redis源码环境构建的文章就介绍到这了,更多相关Redis源码环境内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Spring AOP实现Redis缓存数据库查询源码

    应用场景 我们希望能够将数据库查询结果缓存到Redis中,这样在第二次做同样的查询时便可以直接从redis取结果,从而减少数据库读写次数. 需要解决的问题 操作缓存的代码写在哪?必须要做到与业务逻辑代码完全分离. 如何避免脏读? 从缓存中读出的数据必须与数据库中的数据一致. 如何为一个数据库查询结果生成一个唯一的标识?即通过该标识(Redis中为Key),能唯一确定一个查询结果,同一个查询结果,一定能映射到同一个key.只有这样才能保证缓存内容的正确性 如何序列化查询结果?查询结果可能是单个实体

  • Windows环境部署Redis集群

    一.准备文件 1.下载Redis for windows 的最新版本 下载地址:https://github.com/MSOpenTech/redis/releases 安装到 c:\Redis 目录下(Redis-x64-3.2.100.msi <Windows服务版>) 2.下载 RubyInstaller 下载地址:http://rubyinstaller.org/downloads/ 安装时,勾选:(所使用版本rubyinstaller-2.3.1-x64.exe) Install T

  • Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境

    秒杀活动可以说在互联网上随处可见,从12306抢票,到聚划算抢购,我们生活的方方面面都可以看到秒杀的身影.秒杀的架构设计也是对于一个架构师架构设计能力的一次考验.本文的目的并不在于提供一个可以直接落地的设计方案,而是意在提供一个简单的方法,一个思路,使大家能够对于秒杀背后的一些设计有更感性的认识, 并且可以自己亲自动手实践一下.所有的配置及源码都在本文最后的GitHub repository中可以找到. 首先,先简单介绍下本文中会涉及到的一些组件,如下图所示: JMeter:用JMeter来模拟

  • Redisson分布式锁源码解析

    Redisson锁继承Implements Reentrant Lock,所以具备 Reentrant Lock 锁中的一些特性:超时,重试,可中断等.加上Redisson中Redis具备分布式的特性,所以非常适合用来做Java中的分布式锁. 下面我们对其加锁.解锁过程中的源码细节进行一一分析. 锁的接口定义了一下方法: 分布式锁当中加锁,我们常用的加锁接口: boolean tryLock(long waitTime, long leaseTime, TimeUnit unit) throws

  • Redis源码解析:集群手动故障转移、从节点迁移详解

    一:手动故障转移 Redis集群支持手动故障转移.也就是向从节点发送"CLUSTER  FAILOVER"命令,使其在主节点未下线的情况下,发起故障转移流程,升级为新的主节点,而原来的主节点降级为从节点. 为了不丢失数据,向从节点发送"CLUSTER  FAILOVER"命令后,流程如下: a:从节点收到命令后,向主节点发送CLUSTERMSG_TYPE_MFSTART包:          b:主节点收到该包后,会将其所有客户端置于阻塞状态,也就是在10s的时间内

  • Redis源码环境构建过程详解

    Redis源码环境构建 ​ 近日,蒋德钧新上了一门Redis源码剖析的课程,应好友沈架构师的邀请,又重拾起了Redis源码学习.不过作为正经的JAVA工程师,大概在大学毕业后再也没写过C语言的源码了(还是看过一些的).搭建一个Redis阅读环境我都好意思写一篇博客记录一下了. ​ 不过,不是在windows环境下构建了,是在deepin系统下进行的构建,也许windows用户可以出门右拐了.本次搭建环境主要参考以下两篇windows搭建环境的博客: https://juejin.cn/post/

  • c#源码的执行过程详解

    要讲到C#源码的执行过程 首先要提下程序集,因为Clr并不是和托管摸块打交道的,而是和程序集(dll,exe) 1.从哪里来 程序集是由一个或者多个托管模块以及 资源文件等共同组成的,C#编译器(csc.exe)再把源码编程成IL代码和元数据的时候,会进一步连同资源文件合并成程序集, 实际上就是个PE32文件,里面包含一个清单文件 和多个托管模块和资源(如图),另外程序集中还有一些自描述信息. 2.执行过程 编译器生成好程序集以后,如果是可执行的程序集,会在Main方法执行之前,window会预

  • Django 源码WSGI剖析过程详解

    前言 python 作为一种脚本语言, 已经逐渐大量用于 web 后台开发中, 而基于 python 的 web 应用程序框架也越来越多, Bottle, Django, Flask 等等. 在一个 HTTP 请求到达服务器时, 服务器接收并调用 web 应用程序解析请求, 产生响应数据并返回给服务器. 这里涉及了两个方面的东西: 服务器(server)和应用程序(application). 势必要有一个合约要求服务器和应用程序都去遵守, 如此按照此合约开发的无论是服务器还是应用程序都会具有较大

  • redis debug环境搭建过程详解(使用clion)

    目录 概要 环境搭建的大体思路 windows下安装linux工具链 什么是make和cmake 安装c语言开发的ide 具体安装步骤 cygwin安装 clion安装及插件安装 克隆redis 代码 如何调试 如何调试redis-server 概要 最近写了spring系列,这个系列还在进行中,然后有些同学开始叫我大神,然后以为我各方面都比较厉害,当然了,我是有自知之明的,大佬大神什么的,当作一个称呼就好,如果真的以为自己就是大神,那可能就走偏了. 其实我不少方面都比较薄弱,比如redis.m

  • React全家桶环境搭建过程详解

    本文介绍了React全家桶环境搭建过程详解,分享给大家,具体如下: 环境搭建 1.从零开始搭建webpack+react开发环境 2.引入Typescript 安装依赖 npm i -S @types/react @types/react-dom npm i -D typescript awesome-typescript-loader source-map-loader 新建tsconfig.json { "compilerOptions": { "outDir"

  • Vue编译器源码分析compileToFunctions作用详解

    目录 引言 Vue.prototype.$mount函数体 源码出处 options.delimiters & options.comments compileToFunctions函数逐行分析 createFunction 函数源码 引言 Vue编译器源码分析 接上篇文章我们来分析:compileToFunctions的作用. 经过前面的讲解,我们已经知道了 compileToFunctions 的真正来源你可能会问为什么要弄的这么复杂?为了搞清楚这个问题,我们还需要继续接触完整的代码. 下面

  • Java集合框架源码分析之LinkedHashMap详解

    LinkedHashMap简介 LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有put到LinkedHashmap的节点一一串成了一个双向循环链表,因此它保留了节点插入的顺序,可以使节点的输出顺序与输入顺序相同. LinkedHashMap可以用来实现LRU算法(这会在下面的源码中进行分析). LinkedHashMap同样是非线程安全的,只在单线程环境下使用. LinkedHashMap源码剖析 LinkedHashM

  • Anaconda+vscode+pytorch环境搭建过程详解

    1.安装Anaconda Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项.在官网上下载https://www.anaconda.com/distribution/,因为服务器在国外会很慢,建议从清华镜像https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/下载. 2.安装VScode 需要在Anaconda再装VScode,因为Anaconda公司和微软公司的合作,不用在对进

  • python源码剖析之PyObject详解

    一.Python中的对象 Python中一切皆是对象. ----Guido van Rossum(1989) 这句话只要你学过python,你就很有可能在你的Python学习之旅的前30分钟就已经见过了,但是这句话具体是什么意思呢? 一句话来说,就是面向对象中的"类"和"对象"在Python中都是对象.类似于int对象的类型对象,实现了"类的概念",对类型对象"实例化"得到的实例对象实现了"对象"这个概念.

  • Vue3 源码解读静态提升详解

    目录 什么是静态提升 transform 转换器 hoistStatic 静态提升 walk 函数 walk 函数流程图 总结 什么是静态提升 静态提升是Vue3编译优化中的其中一个优化点.所谓的静态提升,就是指在编译器编译的过程中,将一些静态的节点或属性提升到渲染函数之外.下面,我们通过一个例子来深入理解什么是静态提升. 假设我们有如下模板: <div> <p>static text</p> <p>{{ title }}</p> </di

随机推荐