likes
comments
collection
share

CentOS7安装Redis

作者站长头像
站长
· 阅读数 13

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的构建,没有官方支持。

CentOS7安装Redis

  • Windows安装方式官网的前置说明

CentOS7安装Redis

前置准备

因为Redis是C语言编写的,所以在安装Redis时需要确保系统存在gcc环境以便Redis的编译安装。而本文使用的是CentOS默认是不存在gcc编译环境的,所以需要在安装Redis之前准备好相应的环境。

  • 查看操作系统位数

请确保系统是64位的

getconf LONG_BIT

CentOS7安装Redis

  • 查看是否有C 语言的编译环境
rpm -qa | grep gcc-c++
  • 安装C 语言的编译环境
yum install -y gcc-c++

❗❗❗ 此处的命令是不正确的!!!

  • 查看版本
gcc -v

CentOS7安装Redis

直接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主要是如下图所示:

CentOS7安装Redis


CentOS7安装Redis

解决办法

  • 运行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

CentOS7安装Redis

  • 重新编译
[whybigdata@hdp02 software]pwd
/opt/software
[whybigdata@hdp02 software]cd redis-6.0.8/
# 编译
[whybigdata@hdp02 redis-6.0.8]# make

编译成功!!!

CentOS7安装Redis

因为之前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,出现错误:

CentOS7安装Redis

根据提示 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

CentOS7安装Redis

  • 执行安装命令:执行make install(并迁移redis可执行命令目录【可选操作】)
[whybigdata@hdp02 redis-6.0.8]$ make install PREFIX=/opt/apps/redis-6.0.8

CentOS7安装Redis

查看可执行命令:

CentOS7安装Redis

注意:如果安装时没有迁移可执行命令目录。那么Redis的默认安装目录是在 /usr/local/bin

CentOS7安装Redis

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

CentOS7安装Redis

后台启动

方式一

[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
评论
请登录