第二步 缓存中间件 Redis 编译安装
一、简介
根据 Redis 官网 的信息,Redis 是一个实时数据平台(The Real-time Data Platform.) ,是一个快速、开源、内存中的数据存储结构,也可以用作文档或矢量数据库。
由于内存读写效率高、速度快的特点,Redis 使用内存数据集,能够支持每秒数十万次的读写操作。并且Redis 的所有操作都是原子性的,这意味着操作要么完全执行,要么完全不执行。这种特性对于确保数据的一致性和完整性至关重要,尤其是在高并发环境下处理事务时。
在 SpringBoot 项目中,使用最广泛的缓存中间件就是 Redis 了,本教程将源码开始,介绍如何编译安装 Redis 到 Linux 服务器。
二、安装
2.1 安装前准备
在此处安装时,需要的 make 、openssl等工具和开发库已在之前教程中安装,如果没有安装,在编译过程中遇到缺少的依赖按照之前教程自行安装即可,此处不再赘述。
执行以下命令即可下载Redis 源码包:
wget https://download.redis.io/redis-stable.tar.gz
解压后目录结构:
[root@imufeng opt]# tar -zxf redis-stable.tar.gz -C /usr/src/
[root@imufeng opt]# cd /usr/src/redis-stable/
[root@imufeng redis-stable]# ls
00-RELEASENOTES COPYING MANIFESTO runtest-cluster sentinel.conf utils
BUGS deps README.md runtest-moduleapi src
CODE_OF_CONDUCT.md INSTALL redis.conf runtest-sentinel tests
CONTRIBUTING.md Makefile runtest SECURITY.md TLS.md
2.2 开始编译安装
提示
Redis 没有编译安装选项校验的步骤,PREFIX 参数需要在 install 时指定。
执行以下命令,开始编译:
make -j4 BUILD_TLS=yes
编译成功后,开始安装:
make PREFIX=/usr/local/redis install
安装成功后,目录结构如下:
[root@imufeng bin]# pwd
/usr/local/redis/bin
[root@imufeng bin]# ls
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
三、配置
3.1 环境变量配置
修改 /etc/profile
文件,在 PATH
写入 环境变量即可:
export PATH=$PATH:/usr/local/redis/bin
执行如下命令加载修改:
source /etc/profile 或 . /etc/profile
环境变量生效。
3.2 Redis.conf 配置文件
redis.conf
配置文件需要在启动 Redis 时指定,其详细示例在源码包根目录下,可以将其拷贝到合适的地方,在启动时指定:
mkdir /usr/local/redis/etc/
cp /usr/src/redis-stable/redis.conf /usr/local/redis/etc/
也可只保留部分配置(未指定则为默认)
bind 0.0.0.0 # 监听地址
requirepass root # 访问密码
protected-mode yes # 安全模式
port 6379 # 监听端口
daemonize yes # 开启守护线程
pidfile /var/run/redis_6379.pid # PID文件
loglevel notice # 日志等级
logfile "" # 日志文件
databases 16 # 初始化数据库
3.3 Redis.service 配置
源码包 utils/systemd-redis_server.service
文件提供了 systemed 服务文件,根据提示配置 redis.conf 的位置后,大致如下:
[Unit]
Description=Redis data structure server
Documentation=https://redis.io/documentation
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/redis-server /usr/local/redis/etc/
LimitNOFILE=10032
NoNewPrivileges=yes
Type=notify
TimeoutStartSec=infinity
TimeoutStopSec=infinity
UMask=0077
[Install]
WantedBy=multi-user.target
由于我们选用的 AlmaLinux9 基于 RHCE 9,其 service 文件在 /lib/systemd/system/
目录下,需要将 service 文件重命名为 redis.service
并拷贝到该目录下:
cp /usr/src/redis-stable/utils/systemd-redis_server.service /lib/systemd/system/redis.service
然后执行 systemctl daemon-reload
命令,即可加载更新。
四、启动执行
Redis 启动命令 redis-server /path/to/conf
,即直接执行 redis-server 并指定配置文件即可,如果 protected-mode
配置为 yes,即后端运行,如果为 no,则会将日志打印到控制台。
我们已经配置了 Redis.service 服务,所以执行 systemctl start redis
即可启动服务:
[root@imufeng system]# systemctl start redis
[root@imufeng system]# systemctl status redis
● redis.service - Redis data structure server
Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; preset: disabled)
Active: active (running) since Tue 2024-07-16 13:19:13 ACST; 3h 14min ago
Docs: https://redis.io/documentation
Process: 38149 ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf --> Main PID: 38150 (redis-server)
Tasks: 5 (limit: 48598)
Memory: 8.3M
CPU: 15.082s
CGroup: /system.slice/redis.service
└─38150 "/usr/local/redis/bin/redis-server 0.0.0.0:6379"
如果看到上方内容,即代表 redis 服务启动成功。
我们可以使用 redis-cli 命令或 RedisInsight、AnotherRedisDesktop等工具连接Redis,这里以 redis-cli 举例:
[root@imufeng system]# redis-cli
127.0.0.1:6379> ping
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth root
OK
127.0.0.1:6379> ping
PONG
由于配置文件指定了密码,所以需要认证才可以访问。
至此,Redis 的编译安装已完成。
提示
本文仅讨论Redis 的编译安装,Redis 命令、集群操作、Redis Stack、Redis Insight 工具,等其他内容,详见博客后续更新。