CentOS7安装Redis

158 阅读4分钟

记录redis在centos环境中的安装

下载Redis源码包

可下载的稳定版本地址

wget http://download.redis.io/releases/redis-6.2.1.tar.gz

其他系统安装见官网

下载成功后可以看到对应的*.tar.gz包,如图:

image.png

安装Redis

安装前准备工作

在机器搭建C语言环境

  1. 安装gcc
yum -y install gcc-c++
  1. 查看gcc版本
gcc --version

解压Redis源码包

  • 可以使用mv 或者 cp 命令把对应的包移动到其他位置。
cp redis-6.2.1.tar.gz /usr/local/ 
  • 进入对目录
cd /usr/local/
  • 使用tar 命令解压
tar -zxvf redis-6.2.1.tar.gz

解压过程很快一般不会产生错误,解压完成后会生成redis-6.2.1文件夹

编译源码安装Redis

# 进入目录
cd redis-6.2.1
# 执行编译
make
# 如果需要重新编译,依次按以下顺序执行命令
make distclean
make

编译遇到过报 # [server.c:5118:176: 错误:‘struct redisServer’没有名为‘maxmemory’的成员]的错误。原因是gcc的版本太低了,因此需要更新下gcc的版本。 依次执行以下命令
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
注意: 这里使用的scl 命令启用是临时的,重启虚拟机会回复原来的版本。如果需要长期有效可以使用以下命令
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile

  • Centos8 使用yum数据源问题
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*

sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*
  • 最后一步安装
# 在redis-6.2.1 目录中执行
make install

远程连接Reidis服务器

认识基本命令

安装成功后,可以在 /usr/local/bin 安装目录下看到以下内容

image.png

简单介绍上图中的命令: redis-benchmark: 性能测试工具,可以在自己本地运行,看性能如何。
redis-check-aof: 修复有问题的AOF文件。
redis-check-rdb: 修复有问题的dump.db文件。
redis-cli:客户端,操作入口。
redis-server: Redis 服务器启动命令。
redis-sentinel: Redis 集群使用。

修改配置文件

在解压目录下/usr/local/redis-6.2.1找到redis.conf文件进行编辑

# 进入配置文件
vim /usr/local/redis-6.0.8/redis.conf
  • 修改bind
    bind的作用:如果指定了bind,则说明只允许来自指定网卡的Redis请求。如果没有指定,就说明可以接受来自任意一个网卡的Redis请求。

这里有个问题,今天在Aliyun云服务器上安装Redis,发现bind 指定的Ip地址只能是127.0.0.1 或者 当前服务器IP才能成功启动。如果使用其他地址,启动地址会报错如下 Could not create server TCP listening socket 192.168.0.101:6379:bind:Cannot assign requested address 出现上面问题有可能有是,因为bind是我本地主机的局域网而服务器找不到对应的IP地址导致报错,如果绑定的是Aliyun服务器的公有云地址然后使用另一台服务器的地址去连接才能连接上? 这个有待验证...

# 将配置改成
bind 127.0.0.1
# bind 127.0.0.1 或者 bind 0.0.0.0

需要绑定多个ip可以使用 空格 隔开 例如: bind 127.0.0.1 192.168.xxx.xxx

  • 后台启动设置
    daemonize 是否开启守护进程模式在后台运行,默认值是no ,改成yes即可。
daemonize no
# 改成
daemonize yes
  • 设置保护模式(protected-mode)
    默认值:yes

如果需要远程连接Redis服务可以,有以下三种方式:

  1. 想办法让Redis运行在protected-mode为no的模式。
  2. 如果protected-mode为yes,则在bind指令设置时需要bind的是同一个网卡接口的IP发送的请求。例如 bind 172.18.235.206 此时Redis只认这个IP地址网卡发送的redis请求信息。
  3. 如果protected-mode为yes,如果设置了bind指令为0.0.0.0 则需要使requirepass 来指定密码,等其他机器连接这个Redis时需要输入auth [username] [password] 才能操作Redis
  4. 在Ali或者Tencent云服务器上一般操作如下,然后使用Redis Desktop Manager可以连接。
bind 0.0.0.0
daemonize yes
protected-mode yes
requirepass=password

reids.conf

# 设置密码
requirepass=hello_redis

客户端redis-cli使用

[root@centOS ~]# redis-cli -h 127.0.0.1 -p 6379 --user default -a password --raw
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
Warning: AUTH failed
127.0.0.1:6379> auth default 8426$123456
OK
127.0.0.1:6379>

主要用于测试所以改成

protected-mode yes
# 改成
protected-mode no

这是redis.conf 对protected-mode 的解释如下:

开启保护模式后,如果
1)服务器未使用 "绑定 "指令与一组地址明确绑定。
2)未配置密码。
服务器只接受来自 IPv4 和 IPv6 环回地址 127.0.0.1 和 ::1 以及 Unix域套接字的客户端连接。
默认情况下启用保护模式。只有在确定要让其他主机的客户端连接 Redis(即使未配置身份验证,也未使用 "绑定 "指令明确列出特定接口集)时,才应禁用该模式。

  • Redis Desktop Manager 远程连接Redis

完成上述准备工作便可以使用图形化工具连接Redis

image.png

点击测试连接,确认后主页面会多出服务栏,如图

image.png

注意:防火墙问题,根据不同的系统自行百度开墙方法

拓展

针对bind的深入认识 bind 127.0.0.1 和 bind 0.0.0.0 到底有什么区别?stackoverflow