NoSQL之Redis配置与优化

Redis 是高性能键值型 NoSQL 数据库 ,广泛用于缓存、消息队列、分布式锁、会话存储等场景。正确配置 + 针对性优化,能让 Redis 支撑 10W+ QPS、低延迟、高可用。

本文从安装配置、核心参数优化、性能优化、内存优化、持久化优化、高可用、安全优化全维度讲解,可直接用于生产环境。


一、Redis 基础安装与配置

1. 快速安装(Linux)

bash

运行

复制代码
# 安装依赖
yum install -y gcc make
# 下载源码(推荐稳定版 7.0+/6.2+)
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

2. 生产环境推荐配置文件(redis.conf)

生产禁止使用默认配置,必须修改以下核心项:

ini

复制代码
# 1. 基础配置
daemonize yes          # 后台运行
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis/redis.log"  # 日志文件
dir /var/lib/redis     # 数据文件目录
port 6379              # 端口
bind 0.0.0.0           # 允许所有IP访问(配合密码+防火墙)

# 2. 安全配置
requirepass 你的强密码    # 开启密码认证(必开)
protected-mode no       # 关闭保护模式(公网访问必须)

# 3. 客户端配置
timeout 300             # 空闲连接超时关闭
tcp-keepalive 300       # TCP心跳保活
maxclients 10000        # 最大连接数

# 4. 内存配置(核心)
maxmemory 8G            # 最大使用内存(根据服务器配置)
maxmemory-policy allkeys-lru  # 内存满后淘汰策略(缓存首选)

# 5. 持久化配置
appendonly yes          # 开启AOF持久化
appendfsync everysec    # AOF刷盘策略(性能+安全平衡)
save 3600 1 300 100 60 10000  # RDB快照

二、Redis 核心优化(生产必做)

1. 内存优化(最关键)

Redis 是内存型数据库,内存配置直接决定性能和稳定性。

  1. 设置最大内存 maxmemory

    • 物理内存 8G 服务器:推荐 maxmemory 6G
    • 物理内存 16G 服务器:推荐 maxmemory 12G
    • 禁止不设置,否则内存溢出会导致服务器宕机
  2. 内存淘汰策略(缓存场景必选)

    ini

    复制代码
    maxmemory-policy allkeys-lru
    • allkeys-lru:淘汰最少使用的键(缓存业务首选)
    • volatile-lru:只淘汰带过期时间的键
    • noeviction:不淘汰(写满直接报错,禁止用于缓存
  3. 键值设计优化

    • 避免使用超大键(如 1MB 以上的 string)
    • 集合数据使用 hash/list/set/zset 压缩存储
    • 所有缓存键必须设置过期时间

2. 性能优化(提升吞吐量)

  1. 关闭透明大页 THP(Redis 官方强制要求)

bash

运行

复制代码
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo "echo never > /sys/kernel/mm/transparent_hugepage/enabled" >> /etc/rc.local
  1. TCP backlog 优化

ini

复制代码
tcp-backlog 511
  1. 服务器内核优化

ini

复制代码
# /etc/sysctl.conf
net.core.somaxconn = 1024
vm.overcommit_memory = 1
net.ipv4.tcp_syncookies = 1

执行 sysctl -p 生效

  1. 使用 pipeline 批量操作批量执行命令减少网络开销,性能提升 5~10 倍。

3. 持久化优化(数据安全 + 性能)

Redis 提供 RDB + AOF 两种持久化,生产推荐混合持久化

表格

方案 优点 缺点 生产推荐
RDB 恢复快、体积小 丢数据风险大 必须开启
AOF 数据安全性高 文件大、恢复慢 必须开启
混合持久化 兼顾安全与速度 无明显缺点 首选

生产推荐配置

ini

复制代码
appendonly yes
aof-use-rdb-preamble yes  # 开启混合持久化
appendfsync everysec     # 每秒刷盘(性能最优)
# appendfsync always  # 每次写入都刷盘(最安全,性能差)

4. 高可用优化

  1. 主从复制

    • 主节点写入,从节点读取,分担压力
    • 配置:从节点执行 replicaof 主IP 端口
  2. 哨兵模式(Sentinel)

    • 自动故障转移
    • 主节点宕机自动切换从节点,保证服务不中断
  3. Redis Cluster(集群)

    • 海量数据分片存储
    • 支撑高并发、横向扩展

5. 安全优化(防止被攻击)

  1. 必须设置密码 requirepass 强密码
  2. 禁止使用默认端口 6379
  3. 防火墙限制 IP 访问
  4. 禁止外网直接访问,使用内网 + 跳板机
  5. 关闭危险命令

ini

复制代码
rename-command CONFIG ""
rename-command FLUSHDB ""
rename-command FLUSHALL ""

三、Redis 性能监控命令

bash

运行

复制代码
# 查看内存使用
redis-cli info memory

# 查看整体运行状态
redis-cli info stats

# 查看慢查询
redis-cli slowlog get 10

# 实时监控命令执行
redis-cli monitor

核心监控指标

  • 内存使用率 < 90%
  • 命中率 > 95%(缓存场景)
  • 连接数正常、无频繁淘汰
  • 无慢查询

四、生产环境最佳实践总结

  1. 缓存场景

    • 开启 allkeys-lru 淘汰策略
    • 所有键设置过期时间
    • 混合持久化 + AOF 每秒刷盘
  2. 内存配置maxmemory ≤ 物理内存的 75%

  3. 性能关闭 THP、内核调优、使用 pipeline

  4. 高可用主从 + 哨兵(中小型)Redis Cluster(大型分布式)

  5. 安全密码 + 防火墙 + 禁用危险命令


总结

  1. Redis 优化核心:内存控制、持久化策略、键值设计、安全防护
  2. 生产环境必须修改默认配置,禁止裸奔
  3. 缓存优先 allkeys-lru,数据存储优先混合持久化
  4. 配合主从 / 哨兵 / 集群实现高可用、高并发
相关推荐
weixin_408717772 小时前
CSS如何优化大型项目样式_使用SASS预处理器提升开发效率
jvm·数据库·python
2301_813599552 小时前
CSS如何解决CSS引入后的样式覆盖_理解优先级原则避免重写
jvm·数据库·python
lkx097882 小时前
MySQL
数据库·mysql
betazhou2 小时前
TDSQL-PG创建测试表并定时插入数据模拟生产
前端·javascript·数据库·tdsql·tdsql-pg
kiku18182 小时前
NoSQL之Redis配置与优化
数据库·redis·非关系型数据库
跃渊Yuey2 小时前
【MySQL】MySQL库的操作
数据库·mysql
weixin_408717772 小时前
PHP8.1新特性对AI开发帮助_JIT编译优势【解答】
jvm·数据库·python
瀚高PG实验室2 小时前
瀚高数据库安全版4.5.10及其以上版本使用pg_cron定时任务
服务器·数据库·瀚高数据库
2401_871696522 小时前
golang如何实现Trie前缀树_golang Trie前缀树实现解析
jvm·数据库·python