CentOS7下的Redis部署
一、Redis 概述:内存数据存储的核心组件
1.1 Redis 定位与特性
Redis(Remote Dictionary Server)是一款基于内存的高性能键值对存储系统,支持字符串、哈希、列表、集合等数据结构,具备以下核心特性:
- 内存持久化:支持 RDB 快照和 AOF 日志持久化,保障数据可靠性。
- 原子操作:提供丰富的原子性命令,适用于计数器、分布式锁等场景。
- 集群模式:支持主从复制、哨兵模式和 Cluster 集群,满足高可用需求。
- 丰富生态:支持 Lua 脚本、发布订阅、管道操作等扩展功能。
应用场景:
- 缓存系统(降低数据库压力)
- 实时计数器(如点赞、浏览量统计)
- 分布式会话存储(微服务架构中会话共享)
- 消息队列(轻量级消息传递场景)
二、环境准备与安装
2.1 系统要求
- 操作系统:CentOS 7/8、Ubuntu 20.04+(推荐 64 位系统)
- 硬件配置:
- 开发测试:1 核 CPU、2GB 内存、20GB 磁盘
- 生产环境:4 核 CPU、8GB + 内存、SSD 磁盘(根据数据量扩展)
- 网络要求:开放 6379 端口(默认服务端口)
2.2 安装 EPEL 仓库(CentOS 系统)
Redis 在 CentOS 默认仓库中版本较低,需通过 EPEL 仓库安装最新稳定版:
bash
# 安装EPEL仓库
yum install -y epel-release
yum update -y # 更新系统包
2.3 安装 Redis 服务
bash
# 安装Redis包
yum install -y redis # 验证安装版本
redis-server --version # 应输出Redis 6.2.x或更高
2.4 启动与开机自启
bash
# 启动Redis服务
systemctl start redis # 开启开机自启
systemctl enable redis# 检查服务状态
systemctl status redis
# 预期输出:Active(running),表示服务正常运行
三、基础配置与优化
3.1 配置文件解析
Redis 主配置文件为/etc/redis.conf
,核心配置项说明:
bash
bind 127.0.0.1 # 绑定监听地址(生产环境建议绑定内网IP)
port 6379 # 服务端口
daemonize yes # 以守护进程运行
pidfile /var/run/redis/redis.pid # 进程ID文件
logfile "/var/log/redis/redis.log" # 日志文件路径
dbfilename dump.rdb # RDB快照文件名
dir /var/lib/redis/ # 数据存储目录
requirepass your_strong_password # 访问密码(生产环境必填)
maxmemory 4gb # 最大内存限制(根据服务器内存配置)
maxmemory-policy allkeys-lru # 内存淘汰策略(LRU算法)
3.2 安全配置
3.2.1 设置访问密码
bash
vim /etc/redis.conf
# 找到requirepass配置项,取消注释并设置强密码
requirepass "Itheima@2024#Redis"
3.2.2 限制绑定地址
bash
# 仅允许本地或特定IP访问(生产环境禁止公网直接访问)
bind 192.168.88.130 # 绑定内网IP
3.3 持久化配置
3.3.1 RDB 快照(默认方式)
bash
# 设置自动生成快照的规则(示例:900秒内至少1个键变更时生成快照)
save 900 1
save 300 10
save 60 10000
3.3.2 AOF 日志(追加写入)
bash
appendonly yes # 开启AOF
appendfsync everysec # 每秒同步一次日志(兼顾性能与可靠性)
四、服务验证与基本操作
4.1 客户端连接测试
bash
# 本地连接(无需密码)
redis-cli# 远程连接(需指定IP和密码)
redis-cli -h 192.168.88.130 -p 6379 -a "Itheima@2024#Redis"# 执行简单命令
set mykey "hello redis"
get mykey
# 预期输出:"hello redis"
4.2 查看服务状态
bash
redis-cli info server # 查看服务器信息
redis-cli info memory # 查看内存使用情况
五、生产环境最佳实践
5.1 内存管理策略
- 淘汰策略选择:
allkeys-lru
:当内存不足时,移除最近最少使用的键(推荐通用场景)。volatile-ttl
:仅对设置了过期时间的键使用 TTL 淘汰(适用于有过期策略的场景)。
5.2 主从复制配置
主节点(Master)配置:
bash
vim /etc/redis.conf
replicaof no one # 声明为主节点(默认配置)
从节点(Replica)配置:
bash
vim /etc/redis.conf
replicaof 192.168.88.130 6379 # 指向主节点IP和端口
5.3 哨兵模式(Sentinel)
配置哨兵节点:
bash
vim /etc/redis-sentinel.conf
sentinel monitor mymaster 192.168.88.130 6379 2 # 监控主节点,至少2个哨兵同意才触发故障转移
sentinel down-after-milliseconds mymaster 5000 # 主节点超时时间5秒
六、监控与故障排查
6.1 内置监控命令
bash
redis-cli info # 查看全量监控指标
redis-cli monitor # 实时监控命令执行
6.2 常用工具
- redis-stat:开源 Redis 监控工具,可视化展示 QPS、内存命中率等。
- Prometheus+Grafana:通过
redis_exporter
采集指标,实时展示内存趋势、连接数等。
6.3 常见故障处理
6.3.1 服务无法启动
可能原因:
- 端口被占用:
netstat -anp | grep 6379
检查端口占用。 - 配置文件错误:
redis-server /etc/redis.conf --test-config
验证配置语法。
6.3.2 内存不足
解决方案:
- 调整
maxmemory
配置,增加服务器内存。 - 优化淘汰策略,移除不必要的缓存数据。
七、容器化部署(Docker 场景)
7.1 创建 Dockerfile
dockerfile
FROM redis:alpine # 使用官方轻量级镜像
COPY redis.conf /usr/local/etc/redis/redis.conf # 复制自定义配置
EXPOSE 6379
CMD ["redis-server", "/usr/local/etc/redis/redis.conf"]
7.2 启动容器
bash
docker build -t my-redis .
docker run -d --name redis-container \
-p 6379:6379 \
-v /data/redis/data:/var/lib/redis \
my-redis
八、总结:Redis 部署核心流程
通过本文的实战指南,可掌握基于 Linux 系统的 Redis 单节点部署、安全配置及性能优化。生产环境中建议结合主从复制或集群模式,配合监控体系实现高可用性。如需进一步扩展,可参考官方文档(Redis Documentation)深入学习集群管理与高级特性。