NoSQL 之 Redis 配置与优化
Redis 是高性能键值型 NoSQL 数据库,广泛用于缓存、消息队列、分布式锁、会话存储等场景。本文从安装配置、核心配置、性能优化、安全优化、持久化优化、内存优化、高可用7 个维度,提供企业级可直接落地的方案。优化核心:内存淘汰、禁止大 key、网络内核调优、关闭无用持久化。高可用:主从 + 哨兵(中小型)、Cluster(大型。二、Redis 核心配置文件(redis.conf)持久化存储:n
NoSQL 之 Redis 配置与优化
Redis 是高性能键值型 NoSQL 数据库,广泛用于缓存、消息队列、分布式锁、会话存储等场景。本文从安装配置、核心配置、性能优化、安全优化、持久化优化、内存优化、高可用7 个维度,提供企业级可直接落地的方案。
一、Redis 快速安装
bash
运行
# 安装依赖
yum install -y gcc gcc-c++ make
# 下载解压(推荐稳定版 6.2/7.0)
wget https://download.redis.io/releases/redis-6.2.14.tar.gz
tar -zxvf redis-6.2.14.tar.gz
cd redis-6.2.14
# 编译安装
make && make install
# 默认安装路径:/usr/local/bin
二、Redis 核心配置文件(redis.conf)
生产环境必须使用配置文件启动,禁止直接 redis-server 裸跑。
1. 基础必改配置
ini
# 后台运行(守护进程)
daemonize yes
# 绑定监听IP(生产环境不要用 0.0.0.0,只绑定业务IP)
bind 127.0.0.1 192.168.1.100
# 端口
port 6379
# PID 文件路径
pidfile /var/run/redis_6379.pid
# 日志文件(方便排查问题)
logfile "/var/log/redis/redis.log"
# 数据目录
dir /var/lib/redis
2. 安全配置(重中之重)
ini
# 设置强密码(生产必须配置)
requirepass 你的强密码
# 禁止外网直接访问
bind 内网IP
# 关闭危险命令(防止误删)
rename-command CONFIG ""
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command KEYS ""
# 最大客户端连接数
maxclients 10000
3. 内存配置
ini
# 最大使用内存(根据服务器配置,不要超过物理内存的50%)
maxmemory 8G
# 内存淘汰策略(缓存场景必配)
maxmemory-policy allkeys-lru
4. 持久化配置
ini
# RDB 快照(默认开启)
save 3600 1
save 300 100
save 60 10000
# AOF 日志(生产推荐开启)
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
三、Redis 性能优化(核心)
1. 内存优化
maxmemory:严格限制最大内存,避免 OOM 杀死进程
淘汰策略:
缓存场景:allkeys-lru(删除最近最少使用的键)
持久化存储:noeviction(不删除,直接报错)
键名设计:简短有意义,减少内存开销
避免大 key:string 控制在 10KB 内,hash/list/set 元素不超过 5000 个
2. 网络优化
ini
# 关闭TCP延迟确认,降低延迟
tcp-nodelay yes
# TCP 心跳
tcp-keepalive 300
系统内核优化(临时生效):
bash
运行
echo 512 > /proc/sys/net/core/somaxconn
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl -p
3. CPU 优化
Redis 单线程,不占用多核,多核服务器可部署多实例
绑定 CPU 核心(减少上下文切换)
ini
server_cpulist 0-1
4. 持久化优化
纯缓存业务:关闭 RDB + AOF,性能最高
必须持久化:
AOF + RDB 混合模式(Redis 4.0+ 默认支持)
appendfsync everysec(性能与安全平衡)
避开业务高峰期自动备份
四、安全优化
设置密码:requirepass
禁止外网访问:bind 内网IP + 防火墙限制
禁用危险命令:rename-command
低权限运行:不要用 root 运行 Redis
修改默认端口:不要用 6379
开启密码认证:连接必须验证
五、高可用方案(生产必备)
1. 主从复制(读写分离)
ini
# 从库配置
replicaof 主库IP 主库端口
masterauth 主库密码
replica-read-only yes
2. 哨兵模式(自动故障转移)
至少 3 个哨兵节点
主库宕机自动选举从库升级为主库
配置文件:sentinel.conf
3. Redis Cluster(集群,分布式存储)
支持水平扩容
自动分片存储数据
适合大数据量、高并发场景
六、Redis 日常运维命令
bash
运行
# 启动
redis-server /etc/redis.conf
# 连接
redis-cli -h IP -p 端口 -a 密码
# 查看内存
info memory
# 查看配置
config get *
# 动态修改配置
config set maxmemory 8G
七、常见问题与解决方案
Redis 占满内存
配置 maxmemory + 淘汰策略
清理大 key、过期 key
Redis 变慢
关闭持久化
避免大 key、慢查询
开启 tcp-nodelay
数据丢失风险
开启 AOF
主从 + 哨兵
被攻击
必须设置密码
禁止外网访问
禁用危险命令
总结
配置核心:密码、内存限制、持久化、绑定 IP
优化核心:内存淘汰、禁止大 key、网络内核调优、关闭无用持久化
安全核心:密码、内网访问、禁用危险命令、低权限运行
高可用:主从 + 哨兵(中小型)、Cluster(大型
更多推荐
所有评论(0)