CentOS7安装Redis
CentOS7安装Redis
写在前面
- Linux版本:
CentOS7.5
- gcc版本:
gcc-9.3
- Redis版本:
Redis-6.0.8
❗❗❗ 请先阅读一遍文章,再自行安装,有坑!!!有坑!!!有坑!!!
安装
前置芝士
Redis官网已经建议我们将Redis安装在Linux平台下,而不是安装在Windows下。
- 官网说明:
Redis是用ANSI C编写的,可以在大多数POSIX系统上工作,如Linux、*BSD和Mac OS X,没有外部依赖性。Linux和OS X是Redis开发和测试最多的两个操作系统,我们推荐使用Linux进行部署。Redis可能在Solaris衍生的系统(如SmartOS)中工作,但支持是尽力而为。对于Windows的构建,没有官方支持。
- Windows安装方式官网的前置说明
前置准备
因为Redis是C语言编写的,所以在安装Redis时需要确保系统存在gcc环境以便Redis的编译安装。而本文使用的是CentOS默认是不存在gcc编译环境的,所以需要在安装Redis之前准备好相应的环境。
- 查看操作系统位数
请确保系统是64位的
getconf LONG_BIT
- 查看是否有C 语言的编译环境
rpm -qa | grep gcc-c++
- 安装C 语言的编译环境
yum install -y gcc-c++
❗❗❗ 此处的命令是不正确的!!!
- 查看版本
gcc -v
直接yum 安装gcc-c++版本是4.8.5,版本太老了。会导致下方的make编译失败!!!
- 解压redis源码(直接解压到tar包的目录下即可)
[whybigdata@hdp02 software]$ pwd
/opt/software
[whybigdata@hdp02 software]$ tar -zxf redis-6.0.8.tar.gz
- 执行编译
[whybigdata@hdp02 software]$ cd redis-6.0.8/
# 编译
[whybigdata@hdp02 redis-6.0.8]# make
make编译失败,错误信息如下:
[whybigdata@hdp02 redis-6.0.8]$ make
cd src && make all
make[1]: 进入目录“/opt/software/redis-6.0.8/src”
CC Makefile.dep
make[1]: 离开目录“/opt/software/redis-6.0.8/src”
make[1]: 进入目录“/opt/software/redis-6.0.8/src”
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
.......................................................................................
make[2]: 进入目录“/opt/software/redis-6.0.8/deps”
.......................................................................................
.......................................................................................
cc -O2 -Wall -DLUA_ANSI -DENABLE_CJSON_GLOBAL -DREDIS_STATIC='' -c -o ldump.o ldump.c
.......................................................................................
liblua.a(loslib.o):在函数‘os_tmpname’中:
loslib.c:(.text+0x28c): 警告:the use of `tmpnam' is dangerous, better use `mkstemp'
.......................................................................................
config.status: executing include/jemalloc/jemalloc.h commands
configure: WARNING: unrecognized options: --enable-cc-silence
===============================================================================
jemalloc version : 5.1.0-0-g0
library revision : 2
.......................................................................................
server.h:1065:5: 错误:expected specifier-qualifier-list before ‘_Atomic’
_Atomic unsigned int lruclock; /* Clock for LRU eviction */
^
server.c: 在函数‘serverLogRaw’中:
server.c:1032:31: 错误:‘struct redisServer’没有名为‘logfile’的成员
int log_to_stdout = server.logfile[0] == '\0';
^
^
.......................................................................................
^
make[1]: *** [server.o] 错误 1
make[1]: 离开目录“/opt/software/redis-6.0.8/src”
make: *** [all] 错误 2
Error主要是如下图所示:
解决办法
- 运行make distclean,清除上次编译不成功的残留物
[whybigdata@hdp02 redis-6.0.8]# make distclean
- 重新安装必要的环境(安装
最新版
的gcc编译器)
sudo yum -y install centos-release-scl
sudo yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
- 若要长期使用gcc-9.3版本,可执行以下命令(本文选择长期使用gcc-9.3版本)
# 该命令需要在root用户执行
echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
source /etc/profile
- 测试 gcc版本
gcc --version
- 重新编译
[whybigdata@hdp02 software]$ pwd
/opt/software
[whybigdata@hdp02 software]$ cd redis-6.0.8/
# 编译
[whybigdata@hdp02 redis-6.0.8]# make
编译成功!!!
因为之前make失败过,所以此次执行官方的建议命令
make test
进行测试环境是否正常可用;如果nake编译第一次即成功,那可以直接跳过测试阶段,直接进行安装!
- 测试
[whybigdata@hdp02 redis-6.0.8]# make test
cd src && make test
make[1]: 进入目录“/opt/software/redis-6.0.8/src”
CC Makefile.dep
make[1]: 离开目录“/opt/software/redis-6.0.8/src”
make[1]: 进入目录“/opt/software/redis-6.0.8/src”
You need tcl 8.5 or newer in order to run the Redis test
make[1]: *** [test] 错误 1
make[1]: 离开目录“/opt/software/redis-6.0.8/src”
make: *** [test] 错误 2
执行make test,出现错误:
根据提示
You need tcl 8.5 or newer in order to run the Redis test
,安装tcl
[whybigdata@hdp02 redis-6.0.8]$ sudo yum install tcl
- 执行安装命令:执行make install(并迁移redis可执行命令目录【可选操作】)
[whybigdata@hdp02 redis-6.0.8]$ make install PREFIX=/opt/apps/redis-6.0.8
查看可执行命令:
注意:如果安装时没有迁移可执行命令目录。那么Redis的默认安装目录是在
/usr/local/bin
Redis7
中文件说明:
- redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何
- redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
- redis-check-dump:修复有问题的dump.rdb文件
- redis-sentinel:Redis集群使用
- redis-server:Redis服务器启动命令
- redis-cli:客户端,操作入口
在Redis7中修复文件是:
redis-check-dump
,而在Redis6中则是redis-check-rdb
- 拷贝配置文件
redis.conf
(从源码目录拷贝到redis可执行目录)
[whybigdata@hdp02 bin]$ cp /opt/software/redis-6.0.8/redis.conf /opt/apps/redis-6.0.8/
- 修改配置文件redis.conf
注释掉
bind 127.0.0.1
这一行,添加以下内容(或者是bind 0.0.0.0)
bind hdp02
前台启动
[whybigdata@hdp02 redis-6.0.8]$ bin/redis-server ./redis.conf
采用前台启动后,当前终端窗口不能再用了
- 查看进程
ps -ef | grep redis | grep -v grep
后台启动
方式一
[whybigdata@hdp02 redis-6.0.8]$ nohup bin/redis-server ./redis.conf 1>/dev/null 2>&1 &
解释说明
nohup
:控制台关闭或闲置超时,也不退出1>/dev/null
: 把程序的“1”——标准输出,重定向到文件/dev/null
2>&1
: 把程序的“2”——错误输出,重定向到“1”所去的文件&
: 把程序放到后台运行
方式二
- 修改配置文件
[whybigdata@hdp02 redis-6.0.8]$ vim redis.conf
修改其中一个配置,开启后台启动
#daemonize no
daemonize yes
保存文件后再用普通命令启动,也可以启动为后台模式
[whybigdata@hdp02 redis-6.0.8]$ bin/redis-server ./redis.conf
查看进程
[whybigdata@hdp02 redis-6.0.8]$ netstat -ntlp | grep 6379
(Not all processes could be identified,non-owned process info
will not be shown,you would have to be root to see it all.)
tcp 0 0 192.168.10.138:6379 0.0.0.0:* LISTEN 28282/bin/redis-server
启动客户端
[whybigdata@hdp02 redis-6.0.8]$ bin/redis-cli -h hdp02
全文结束!
本文使用 markdown.com.cn 排版
转载自:https://juejin.cn/post/7221333266593693755