CentOS Linux安装部署Redis
前言
该安装是从Redis 源码编译安装到 Linux 系统,需要C的编译环境,还需要 libc 包,当前安装的Redis版本是redis-stable 7.4.0。
环境检查
使用命令查看linux信息,我的系统是 CentOS Linux 7 (Core)
要在 CentOS 7 上检查是否具备编译 Redis 所需的 C 编译器(GCC)和 libc 环境,你可以按照以下步骤进行操作:
检查 GCC 版本
首先,你需要确认系统上是否已经安装了 GCC(GNU Compiler Collection)。如果已安装,你可以使用以下命令来查看 GCC 的版本:1
gcc --version
如果命令返回了版本信息,那么说明 GCC 已经安装好了。如果没有安装或未找到 GCC,你需要安装它。在 CentOS 7 上,你可以使用 yum 包管理器来安装 GCC:
1
sudo yum install gcc
检查 libc
libc 是 C 标准库的一部分,通常与 GCC 一起安装。你不需要单独安装 libc,因为它通常是系统默认的一部分。如果你想要确认 libc 的版本,你可以查看 glibc 的版本。在 CentOS 7 中,glibc 的版本可以通过以下命令获取:1
ldd --version
这会显示 ld-linux-x86-64.so.2 或 ld-linux.so.2 的版本,它们是 glibc 的一部分。
检查必要的开发工具
为了确保编译过程顺利,你还需要安装一些基本的开发工具,例如 make 和 autoconf。你可以使用以下命令来安装它们:1
sudo yum install make autoconf
验证编译环境
最后,你可以尝试编译一个小的 C 程序来验证编译环境是否正确设置。创建一个名为 hello.c 的文件,并写入以下内容:1
2
3
4
5
6#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}然后,编译并运行这个程序:
1
2gcc hello.c -o hello
./hello如果一切正常,你应该能看到 “Hello, World!” 的输出。
通过上述步骤,你可以确认你的 CentOS 7 系统是否具备了编译 Redis 所需的基本编译环境。
参考资料
- Install Redis from Source | Docs
- redis/redis-hashes: Redis tarball SHA1 hashes (github.com)
- Linux安装部署Redis(超级详细) - 长沙大鹏 - 博客园 (cnblogs.com)
- raw.githubusercontent.com/redis/redis/unstable/redis.conf
下载Redis
Redis 的源代码文件可以从下载页面获得。你可以通过与 redis-hashes Git 仓库中的摘要进行比较来验证这些下载文件的完整性
redis/redis-hashes
要从 Redis 的下载站点获取最新稳定版本的源代码文件,请运行以下命令:
1 |
|
解压并安装Redis
解压
1
tar -xzvf redis-stable.tar.gz
移动redis目录
1
2mv /data/yunwei/redis-stable /usr/local/redis7
cd /usr/local/redis7编译
1
make
安装
这里多了一个关键字PREFIX=
这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,
库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。
1 |
|
- 启动redis,是否正常启动,Ctrl-C 关闭程序
1
./bin/redis-server ./redis.conf
业务配置(学习专用)
将 redis.conf 配置复制一份
1
2mkdir -p /data/yunwei/redis7/logs
cp /usr/local/redis7/redis.conf /data/yunwei/redis7/redis.conf修改配置
1
vi /data/yunwei/redis7/redis.conf
修改的配置如下
通过 /daemonize 查找到属性,默认是no,更改为yes即可。 (通过/关键字查找出现多个结果则使用 n字符切换到下一个即可,查找到结果后输入:noh退回到正常模式)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23# 守护线程启动
daemonize yes
# 监听绑定所有 ipv4 和 ipv6(学习专用配置不建议生产使用)
bind * -::*
# 保护模式(学习专用配置不建议生产使用)
protected-mode no
# 日志文件路径
logfile "/data/yunwei/redis7/logs/redis_6379.log"
# 服务启动pid记录文件路径
pidfile /data/yunwei/redis7/redis_6379.pid
# 数据保存的文件名
dbfilename dump.rdb
# 数据保存的路径
dir /data/yunwei/redis7
# 设置密码
requirepass root启动
1
/usr/local/redis7/bin/redis-server /data/yunwei/redis7/redis.conf
检查启动
1
2
3
4
5
6
7
8
9# 查看程序是否启动
ps -ef |grep redis
# redis 连接
/usr/local/redis7/bin/redis-cli -h 127.0.0.1 -p 6379
# 连接后输入密码
auth root
# 查看redis info 信息
info
防火墙设置
如果遇到连不上 ,telnet 都连不上对应端口时,可能是linux 开启防火墙了,需要将 6379 添加到防火墙中
telnet 命令,看是否访问的到
1
telnet 192.168.0.106 6379
检查防火墙状态
1
sudo systemctl status firewalld
如果防火墙处于关闭状态,可以跳过此步骤。如果防火墙处于运行状态,需要开放
MySQL
服务的端口(默认为3306
)防火墙开放 MySQL 端口
1
2sudo firewall-cmd --permanent --add-port=6379/tcp
sudo firewall-cmd --reload查看指定区域所有打开的端口
1
firewall-cmd --zone=public --list-ports
配置开机启动
在 /etc/systemd/system/ 路径下创建 redis6379.service 文件
1
2cd /etc/systemd/system/
vi redis6379.service写入如下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14[Unit]
Description=Redis in-memory data store
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis7/bin/redis-server /data/yunwei/redis7/redis.conf
ExecStop=/usr/local/redis7/bin/redis-cli -h 127.0.0.1 -p 6379 -a root shutdown
TimeoutStopSec=60s
Restart=always
RestartSec=10s
[Install]
WantedBy=multi-user.target加载新的服务单元文件
1
sudo systemctl daemon-reload
启动 Redis 服务
1
sudo systemctl start redis6379
设置 Redis 服务开机启动
1
sudo systemctl enable redis6379
检查 Redis 服务状态
1
sudo systemctl status redis6379
配置文件信息
在目录/usr/local/redis下有一个redis.conf的配置文件。我们上面启动方式就是执行了该配置文件的配置运行的。我么可以通过cat、vi、less等Linux内置的读取命令读取该文件。
也可以通过redis-cli命令进入redis控制台后通过CONFIG GET * 的方式读取所有配置项。 如下:
1 |
|
配置项名称 | 配置项值范围 | 说明 |
---|---|---|
daemonize | yes、no | yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行 |
port | 指定 Redis 监听端口,默认端口为 6379 | |
bind | 绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。 | |
protected-mode | yes 、no | 保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。 |
timeout | 300 | 当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能 |
loglevel | debug、verbose、notice、warning | 日志级别,默认为 notice |
databases | 16 | 设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到 |
rdbcompression | yes、no | 指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。 |
dbfilename | dump.rdb | 指定本地数据库文件名,默认值为 dump.rdb |
dir | 指定本地数据库存放目录 | |
requirepass | 设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH |
|
maxclients | 0 | 设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。 |
maxmemory | XXX |
指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。 |
这里我要将daemonize改为yes,不然我每次启动都得在redis-server命令后面加符号&,不这样操作则只要回到Linux控制台则redis服务会自动关闭,同时也将bind注释,将protected-mode设置为no。 | ||
这样启动后我就可以在外网访问了。 |
1 |
|
通过 /daemonize 查找到属性,默认是no,更改为yes即可。 (通过/关键字查找出现多个结果则使用 n字符切换到下一个即可,查找到结果后输入:noh退回到正常模式)
redis-cli 使用
redis-cli
是连接本地redis服务的一个命令,通过该命令后可以既然怒redis的脚本控制台。
输入exit可以退出redis脚本控制台