概要信息

本文主要介绍在CentOS6.x下编译Redis的源码,并使用后台进程启动一个Redis实例

下载、解压并编译Redis的源代码

下载Redis源代码

打开Redis的官网,进入Download模块:https://redis.io/download
我们会看到:

上文说到,我们可以通过:

http://download.redis.io/redis-stable.tar.gz

来获取最新的稳定版本的Redis源码,那么我们就使用这个最新的稳定版本

在下载之前,我们需要选定一个目录要作为我们接下来的工作目录,在我的电脑上,我的工作路径是 /opt/redis,当然你可以自己创建和选择喜欢的路径。

使用wget 命令下载:

wget http://download.redis.io/redis-stable.tar.gz

解压Redis源代码

[root@arvin1 redis]# tar -zxvf redis-stable.tar.gz
[root@arvin1 redis]# ls
redis-stable redis-stable.tar.gz
[root@arvin1 redis]# cd redis-stable
[root@arvin1 redis-stable]# ls
00-RELEASENOTES BUGS CONTRIBUTING copYING deps INSTALL Makefile MANIFESTO README.md redis.conf runtest runtest-cluster runtest-sentinel sentinel.conf src tests utils

编译Redis源码

使用 make 命令实现redis源码的编译:

[root@arvin1 redis-stable]# make

从结果上看,发现没有gcc和cc命令,怎么办?当然是先安装这两个命令:

[root@arvin1 redis-stable]# yum install -y gcc-c++

安装完成后,继续执行 make 命令,可能会得到下面的结果:

这回说的是 jemalloc的版本不对,有两种可能性,有可能是上一次make命令导致有些残留的文件没删除,我们使用make distclean 清理一下上次的make残留文件:

[root@arvin1 redis-stable]# make distclean

再次执行 make 命令,如果还是出现下面的提示:

我们再使用另一个参数来make:

[root@arvin1 redis-stable]# make MALLOC=libc

一般情况下,应该没问题了,接着就等值编译完成了,编译完成最后会提示:

最后编译完成了,提示用make test检测下哦,既然这么推荐,那就运行一下make test吧

[root@arvin1 redis-stable]# make test

运行后的结果如下,发现又有问题:

说是缺少 tcl 这个软件包,好吧在使用yum安装一下:

[root@arvin1 redis-stable]# yum install -y tcl

安装完成后继续使用 make test, 这个过程比较长,最后如果成功的话,会出现:

到此,Redis就算是编译完成了,我来看看编译后的文件,编译后的文件都放在了 /opt/redis/redis-stable/src 目录下,主要有redis-cli,redis-server,redis-sentinel 这三个是比较常用的命令。

启动单节点Redis实例

将命令拷贝到PATH路径下

目的在于能够在任意目录下使用redis的相关命令,我们先来看看系统当前的PATH是什么:

[root@arvin1 src]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@arvin1 src]#

我们可以放在任意一个目录下,一般放在 /usr/local/bin 目录下

[root@arvin1 src]# cp redis-cli /usr/local/bin
[root@arvin1 src]# cp redis-server /usr/local/bin
[root@arvin1 src]# cp redis-sentinel /usr/local/bin
[root@arvin1 src]# ll /usr/local/bin | grep redis
-rwxr-xr-x. 1 root root 403989 Apr 20 00:23 redis-cli
-rwxr-xr-x. 1 root root 2522088 Apr 20 00:23 redis-sentinel
-rwxr-xr-x. 1 root root 2522088 Apr 20 00:23 redis-server

上面已经将命令拷贝到系统的PATH路径下了,因此任意目录下可以使用上面三个命令。

配置单节点redis.conf

在前面我们已经准备好了环境,现在我们就来启动一个Redis实例吧。我们之前的编译路径是:/opt/redis/redis-stable,打开该目录,我们发现该目录中有一个redis.conf文件。为了便于做实验,我们在另一个目录中进行:

[root@arvin1 redis]# mkdir single

将样板文件 redis.conf 复制一个到 /opt/redis/single 目录下:

[root@arvin1 single]# cp /opt/redis/redis-stable/redis.conf /opt/redis/single/

编辑这个文件,设置以下几个配置项:

将bind 127.0.0.1 这个配置项注释掉(不用管也可以,本机测试)
设置监听端口: port 6379
设置后台进程运行: daemonize yes
可以指定日志输出文件,如果不指定的话默认是/dev/null,比如设置为:logfile “/opt/redis/single/log.log”

配置好之后,保存文件并退出

启动Redis实例

在上一小节中,我们已经配置好了 /opt/redis/single/redis.conf 接下来只需要指定这个配置文件启动Redis实例就可以了,使用如下命令进行启动:

[root@arvin1 single]# redis-server /opt/redis/single/redis.conf

启动完成后,可检查下Redis的运行情况,可以打开日志“/opt/redis/single/log.log”,如果要查看进程信息的话,使用以下命令:

[root@arvin1 single]# ps -ef | grep redis
root 4130 1 0 00:35 ? 00:00:00 redis-server *:6379
root 4137 4110 0 00:36 pts/1 00:00:00 grep redis

[root@arvin1 single]# netstat -an | grep 6379
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN
tcp 0 0 :::6379 :::* LISTEN

使用redis-cli客户端

启动了Redis实例后,我们可以使用redis-cli自带的客户端来进行一些验证:

[root@arvin1 single]# redis-cli -p 6379
127.0.0.1:6379> info cpu
# cpu
used_cpu_sys:0.17
used_cpu_user:0.09
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

关闭Redis实例

关闭有几种方式,第一种是直接将该实力的PID执行kill操作;第二种是直接使用redis-cli,进入后使用shutdown命令进行关闭,第三种,还是使用redis-cli进行关闭,直接使用命令:

[root@arvin1 single]# redis-cli -p 6379 shutdown

说用户请求了shutdown,Redis将数据存到磁盘,并删除了pid文件,redis准备好了退出。

CentOS6下编译、安装Redis源码的更多相关文章

  1. HTML实现代码雨源码及效果示例

    这篇文章主要介绍了HTML实现代码雨源码及效果示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. ios – Xcode警告:“没有处理文件的规则”和“找不到目录”

    重命名我的项目文件夹后,我收到以下错误消息:什么可能出错?解决方法关于第一个警告,您可以在项目设置中的“构建阶段”中检查XCode,即头文件不会出现在“编译源”列表中.

  3. cocoapods – 命令/ bin / sh失败,退出代码23

    适用于所有豆荚,无需豆荚但仍然是同样的错误.有任何想法吗?

  4. 你如何将xcode项目转换为cocoapod?

    我有一段代码,我发现我在多个不同的项目中重复使用,所以我想把它变成一个cocoapod并使用私人cocoapod仓库.我的问题是如何将xcode项目设置为cocoapod?它应该是一个静态库还是一个带有appdelegate的空“项目”?

  5. ios – 如何将文件添加到主包的/ Library / Sounds目录中?

    根据Apple’sdocumentation,/Library/Sounds中的声音文件将在尝试播放声音时由系统搜索.如何将声音文件添加到此文件夹?适用于iOS的正确文档应为here总之,您只需将声音文件作为应用程序包的非本地化资源添加到项目中.

  6. ios – 资产目录与文件夹参考:何时使用其中一个?

    我可以将文件放入Assets.xcassets,或者我可以将文件放入文件夹引用.我何时会选择一个而不是另一个?

  7. ios – 从icloud备份中限制sqlite-wal和sqlite-shm

    我是第一次使用coredata,我必须从文档目录中的iCloud备份限制sqlitedb文件,我使用下面的代码完成了它//阻止iCloud备份文档目录文件夹现在我不明白的是,我们还需要从icloud备份中限制sqlite-wal和sqlite-shm文件,如果是,那么如何从icloud备份限制sqlite-wal和sqlite-shm文件我想要一个解决方案,而无需从文档目录文件夹中更改sqlitedb位置…

  8. iOS:如何从文档目录中删除具有特定扩展名的所有现有文件?

    当我更新我的iOS应用程序时,我想删除Documents目录中的任何现有sqlite数据库.现在,在应用程序更新时,我将数据库从软件包复制到文档目录,并通过附加软件包版本来命名它.因此,在更新时,我还想删除可能存在的任何旧版本.我只是希望能够删除所有sqlite文件,而无需循环浏览并查找以前版本的文件.是否有任何方法可以对removeFileAtPath:方法进行通配符?解决方法那么,你想要删除所有*.sqlite文件?

  9. .dylib在Debug中链接,在XCode中找不到适用于iPhone的版本

    所以我已经将libxml2.2.dylib库包含在我的iPhoneXCode项目中,以创建一些Xml和XPath解析实用程序.当我编译并运行在模拟器和设备的调试模式时,我没有问题,但是,当我切换到发布模式我得到…

  10. ios – 从文件目录加载UIImage

    我正在尝试从文件目录加载一个UIImage,并将其设置为UIImageView,如下所示:但是,每当我尝试以上,图像从不加载.该图像在Documents/MyAppCustomDirectory/school.png中.以上是否正确从该目录加载?我也尝试了其他几个:UIImageimageWithContentsOfFile,以及基于SO响应的其他方法.解决方法要获取您应该使用的文档目录:我不太清

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部