news 2026/5/31 16:04:11

【Redis分布式缓存实战】第4章 单机Redis部署、配置与基础优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Redis分布式缓存实战】第4章 单机Redis部署、配置与基础优化

多环境部署:Linux生产环境源码/容器标准化部署

一、部署整体概述与环境规划

1.1 部署目标

实现Redis开发、测试、生产多环境隔离部署,提供两套标准化部署方案(Linux源码编译部署、Docker容器部署),统一各环境目录结构、配置规范、启动方式和运维标准,规避多环境冲突,保障生产环境高可用、安全性、稳定性,同时兼顾开发测试环境的轻量化、易部署特性。

1.2 多环境整体规划

环境类型

部署方式

默认端口

数据持久化策略

日志级别

适用场景

开发环境(dev)

Docker容器快速部署

6379

关闭持久化

verbose

本地开发、功能调试、迭代测试

测试环境(test)

Docker容器标准化部署

6380

RDB定时持久化

notice

功能测试、压力测试、预发布验证

生产环境(prod)

Linux源码编译部署

6381

RDB+AOF双持久化

warning

线上业务承载、高可用稳定运行

1.3 基础环境要求

  • 操作系统:CentOS 7+/Ubuntu 18.04+ 64位
  • 内核版本:3.10.0+,关闭透明大页(生产必配)
  • 依赖工具:gcc、make、cmake、wget、tar(源码部署必备);docker、docker-compose(容器部署必备)
  • 权限要求:全程禁止root直接运行Redis,创建独立普通用户管理服务
  • 网络要求:生产环境仅开放内网端口,禁止公网直接访问,配置防火墙白名单

二、通用前置配置(所有环境必做)

2.1 系统内核优化(生产核心)

Redis为内存型数据库,需优化系统内核参数,规避OOM、内存溢出、连接受限问题,永久生效配置如下:

1. 编辑内核参数文件

vim /etc/sysctl.conf

2. 追加以下参数

# 调整Redis最大文件描述符 fs.file-max = 65535 # 关闭TCP时间戳,避免端口占用冲突 net.ipv4.tcp_timestamps = 0 # 调整TCP队列参数 net.ipv4.tcp_syn_backlog = 65535 # 内存分配策略,禁止OOM随机杀死进程 vm.overcommit_memory = 1 # 关闭透明大页(解决Redis延迟抖动问题) transparent_hugepage=never

3. 生效配置

sysctl -p

2.2 文件句柄数优化

Redis高并发场景需提升最大文件打开数,编辑limits配置:

vim /etc/security/limits.conf

追加内容:

redis soft nofile 65535 redis hard nofile 65535

2.3 创建独立运行用户

所有环境统一创建redis普通用户,禁止root启动服务,保障安全:

# 创建用户,禁止登录系统 useradd -s /sbin/nologin -M redis # 设置目录权限 chmod -R 755 /usr/local/redis chown -R redis:redis /usr/local/redis

三、生产环境Redis源码标准化部署

源码编译部署为生产环境首选方案,性能最优、配置自由度高、无容器虚拟化损耗,适配线上高并发、高可用场景。

3.1 安装依赖环境

# CentOS yum install -y gcc gcc-c++ make cmake wget tar # Ubuntu apt install -y gcc make cmake wget tar

3.2 下载并解压源码包

统一使用稳定版Redis(当前最新稳定版7.2.5),官方源码包部署,规避第三方包漏洞:

# 进入安装目录 cd /usr/local # 下载源码 wget https://download.redis.io/releases/redis-7.2.5.tar.gz # 解压 tar -zxvf redis-7.2.5.tar.gz # 重命名统一目录 mv redis-7.2.5 redis # 进入编译目录 cd redis

3.3 编译安装

# 编译(开启多核编译,加速部署) make -j$(nproc) # 安装到系统目录 make install

3.4 标准化目录规划

生产环境统一目录结构,规范日志、数据、配置、PID文件存放路径,便于运维管理:

# 创建标准化子目录 mkdir -p /usr/local/redis/{conf,data,logs,pid}
  • conf:存放自定义配置文件
  • data:存放RDB、AOF持久化数据
  • logs:存放运行日志、错误日志
  • pid:存放进程PID文件

3.5 生产级配置文件优化

复制默认配置文件并自定义生产专属配置,关闭危险命令、开启双持久化、配置密码、限制访问:

# 复制默认配置 cp /usr/local/redis/redis.conf /usr/local/redis/conf/redis-prod.conf

编辑生产配置文件 ​​vim /usr/local/redis/conf/redis-prod.conf​​,修改核心参数:

# 基础配置 port 6381 bind 127.0.0.1 内网IP # 仅内网访问,禁止0.0.0.0全网暴露 daemonize yes # 后台运行 pidfile /usr/local/redis/pid/redis.pid logfile /usr/local/redis/logs/redis-prod.log dir /usr/local/redis/data # 安全配置 requirepass 自定义强密码 # 设置生产密码 rename-command FLUSHALL "" # 禁用危险命令 rename-command FLUSHDB "" rename-command KEYS "" # 持久化配置(生产双持久化) save 900 1 save 300 10 save 60 10000 rdbcompression yes appendonly yes appendfsync everysec # 内存优化 maxmemory 16gb # 根据服务器内存调整,建议不超过物理内存70% maxmemory-policy allkeys-lru # 连接优化 tcp-backlog 65535 timeout 0 tcp-keepalive 300

3.6 配置系统自启动服务

创建systemd系统服务,实现开机自启、统一启停管理:

vim /etc/systemd/system/redis-prod.service

写入服务配置:

[Unit] Description=Redis Production Service After=network.target [Service] Type=forking User=redis Group=redis ExecStart=/usr/local/bin/redis-server /usr/local/redis/conf/redis-prod.conf ExecStop=/usr/local/bin/redis-cli -p 6381 -a 密码 shutdown Restart=always RestartSec=3 [Install] WantedBy=multi-user.target

重载服务、设置开机自启:

systemctl daemon-reload systemctl enable redis-prod systemctl start redis-prod systemctl status redis-prod

四、多环境容器标准化部署(开发/测试)

容器部署适用于开发、测试环境,部署快速、环境隔离彻底、无需适配系统依赖,通过docker-compose统一管理多实例,避免环境冲突。

4.1 容器环境前置准备

安装Docker与Docker-Compose:

# CentOS安装docker yum install -y docker-ce docker-ce-cli containerd.io # 启动docker并开机自启 systemctl start docker && systemctl enable docker # 安装docker-compose yum install -y docker-compose

4.2 多环境目录标准化规划

# 创建统一容器部署目录 mkdir -p /docker/redis/{dev,test} # 分别创建各环境配置、数据、日志目录 mkdir -p /docker/redis/dev/{conf,data,logs} mkdir -p /docker/redis/test/{conf,data,logs}

4.3 开发环境(dev)容器配置

4.3.1 开发环境配置文件

创建 ​​/docker/redis/dev/conf/redis-dev.conf​​,轻量化配置,关闭持久化:

port 6379 bind 0.0.0.0 daemonize no logfile /data/logs/redis-dev.log # 关闭持久化,提升开发速度 save "" appendonly no maxmemory 4gb maxmemory-policy allkeys-lru
4.3.2 开发环境docker-compose.yml

创建 ​​/docker/redis/dev/docker-compose.yml​​:

version: '3.8' services: redis-dev: image: redis:7.2.5-alpine container_name: redis-dev restart: always ports: - "6379:6379" volumes: - ./conf/redis-dev.conf:/etc/redis/redis.conf - ./data:/data - ./logs:/data/logs command: redis-server /etc/redis/redis.conf environment: - TZ=Asia/Shanghai

4.4 测试环境(test)容器配置

4.4.1 测试环境配置文件

创建 ​​/docker/redis/test/conf/redis-test.conf​​,模拟生产基础配置,开启RDB持久化:

port 6380 bind 0.0.0.0 daemonize no logfile /data/logs/redis-test.log save 300 10 rdbcompression yes appendonly no maxmemory 8gb maxmemory-policy allkeys-lru requirepass 测试环境密码
4.4.2 测试环境docker-compose.yml

创建 ​​/docker/redis/test/docker-compose.yml​​:

version: '3.8' services: redis-test: image: redis:7.2.5-alpine container_name: redis-test restart: always ports: - "6380:6380" volumes: - ./conf/redis-test.conf:/etc/redis/redis.conf - ./data:/data - ./logs:/data/logs command: redis-server /etc/redis/redis.conf environment: - TZ=Asia/Shanghai

4.5 容器环境启动与验证

# 启动开发环境Redis cd /docker/redis/dev docker-compose up -d # 启动测试环境Redis cd /docker/redis/test docker-compose up -d # 查看运行状态 docker ps | grep redis

五、多环境隔离核心规范

5.1 端口隔离

严格遵循环境端口区分:开发6379、测试6380、生产6381,杜绝端口冲突,所有环境端口统一备案,防火墙仅开放对应环境端口。

5.2 数据隔离

  • 源码生产环境:数据存放于/usr/local/redis/data,独立磁盘分区挂载
  • 容器开发/测试环境:数据挂载至宿主机独立目录,互不干扰
  • 禁止跨环境数据拷贝覆盖,定期区分备份各环境数据

5.3 权限隔离

  • 生产环境:仅redis用户拥有目录权限,root只读,禁止普通用户修改配置
  • 测试/开发环境:适度放宽权限,但禁止全局777权限

六、生产环境运维标准化规范

6.1 启停管理

# 启动 systemctl start redis-prod # 停止(安全停机,持久化数据) systemctl stop redis-prod # 重启 systemctl restart redis-prod # 状态查看 systemctl status redis-prod

6.2 数据备份规范

生产环境每日凌晨自动备份RDB+AOF数据,保留7天备份文件,配置定时任务:

crontab -e # 追加定时备份任务 0 0 * * * /usr/bin/cp -rf /usr/local/redis/data/* /data/redis-backup/$(date +%Y%m%d) && rm -rf /data/redis-backup/$(date -d "7 days ago" +%Y%m%d)

6.3 日志运维

配置日志切割,避免日志文件过大,安装logrotate实现自动切割:

vim /etc/logrotate.d/redis-prod

写入配置:

/usr/local/redis/logs/redis-prod.log { daily rotate 7 compress missingok notifempty dateext }

七、部署验证标准

7.1 基础连通性验证

# 生产环境连接验证 redis-cli -p 6381 -a 密码 ping # 测试环境连接验证 redis-cli -p 6380 -a 密码 ping # 开发环境连接验证 redis-cli -p 6379 ping

返回 ​​PONG​​ 即为部署成功。

7.2 配置校验

分别查看各环境核心配置,确认端口、持久化、内存参数生效,无配置冲突。

7.3 进程校验

# 查看Redis进程 ps -ef | grep redis # 确认运行用户、端口、配置文件路径正确

八、常见问题排查

  • 启动失败:端口占用:通过netstat -lnp | grep 端口查找占用进程,终止冲突进程或修改对应环境端口
  • 生产内存溢出:检查maxmemory配置,优化系统vm.overcommit_memory参数,清理无用缓存
  • 容器挂载权限不足:执行chmod -R 777 /docker/redis/*临时授权,或修改宿主机目录属主
  • 开机自启不生效:重新执行systemctl daemon-reload重载服务配置

核心配置文件详解:内存、网络、日志、持久化基础配置

本节针对前文部署的多环境Redis,深度解析四大核心配置模块,包含参数释义、默认规则、环境差异化配置、生产优化要点,所有配置适配Redis7.x版本,完全兼容本文源码与容器部署方案,可直接落地复用。

2.1 内存核心配置(重中之重)

内存是Redis最核心的资源,所有数据默认存储于内存,合理配置可彻底规避内存溢出、OOM杀死进程、数据淘汰异常等问题,适配前文生产内存溢出故障排查方案。

2.1.1 核心参数详解
  • maxmemory:Redis最大可用内存阈值,默认无限制。Redis启动后所有数据加载至内存,达到阈值后触发数据淘汰策略。生产环境必须配置,建议设置为服务器物理内存的60%-70%,预留内存给系统内核与其他进程。 环境适配:生产16gb、测试8gb、开发4gb,禁止设置0(无限制),避免内存打满宕机。
  • maxmemory-policy:内存淘汰策略,内存达到maxmemory时触发,共8种策略,生产优选LRU算法。 常用策略: 1. allkeys-lru:优先淘汰最近最少使用的所有key(生产通用最优); 2. volatile-lru:仅淘汰设置过期时间的最少使用key; 3. allkeys-random:随机淘汰任意key(不推荐); 4. noeviction:内存满后拒绝写入,只可读(高一致性业务可选)。
  • vm.overcommit_memory(系统级内存配置):配合Redis内存管控,值为1时允许系统超额分配内存,彻底解决Redisfork子进程持久化时内存申请失败问题,是生产环境必配内核参数。
2.1.2 多环境标准化配置
# 生产环境 maxmemory 16gb maxmemory-policy allkeys-lru # 测试环境 maxmemory 8gb maxmemory-policy allkeys-lru # 开发环境 maxmemory 4gb maxmemory-policy allkeys-lru
2.1.3 避坑要点

未配置maxmemory会导致Redis无限占用内存,最终被系统OOM机制强制杀死;淘汰策略选错会引发业务数据丢失、缓存命中率下降等问题。

2.2 网络核心配置

网络配置决定Redis连接安全性、并发承载能力、连接稳定性,是多环境隔离、防攻击、高并发适配的关键,生产环境重点保障内网安全与高并发队列。

2.2.1 核心参数详解
  • port:服务监听端口,本文严格隔离:开发6379、测试6380、生产6381,杜绝端口冲突。
  • bind:监听IP地址,核心安全参数。 生产配置:bind 内网IP 127.0.0.1,仅内网本机及内网设备访问,禁止0.0.0.0全网暴露,防止公网攻击; 测试/开发配置:bind 0.0.0.0,方便调试与跨设备访问。
  • tcp-backlog:TCP连接队列最大长度,默认511,高并发生产环境调至65535,避免连接排队、新建连接失败,需配合系统net.ipv4.tcp_syn_backlog内核参数同步优化。
  • timeout:客户端空闲连接超时时间,单位秒,0表示不主动断开空闲连接,生产推荐0,避免频繁重连。
  • tcp-keepalive:TCP保活探测周期,默认300秒,检测僵尸连接并自动释放,回收无效连接资源,提升并发稳定性。
  • maxclients:最大客户端连接数,默认10000,可根据业务并发调整,连接数超限后拒绝新连接并返回报错。
2.2.2 多环境标准化配置
# 生产环境 port 6381 bind 内网IP 127.0.0.1 tcp-backlog 65535 timeout 0 tcp-keepalive 300 maxclients 10000 # 测试环境 port 6380 bind 0.0.0.0 tcp-backlog 65535 timeout 0 tcp-keepalive 300 # 开发环境 port 6379 bind 0.0.0.0 tcp-backlog 1024 timeout 0

2.3 日志核心配置

日志配置用于记录Redis运行状态、错误信息、操作日志,是运维排查故障、追溯问题的核心依据,各环境差异化区分日志级别与存储规则。

2.3.1 核心参数详解
  • logfile:日志文件绝对路径,统一标准化目录,生产独立日志目录,便于日志切割与归档。
  • loglevel:日志级别,四级逐级精简: 1. verbose(详细):记录所有操作,适用于开发调试; 2. notice(正常):记录常规重要日志,适用于测试环境; 3. warning(警告):仅记录错误、警告日志,生产环境首选,减少日志磁盘占用; 4. debug(调试):极低环境使用,生产禁止开启。
  • syslog-enabled:是否开启系统日志,生产可开启,适配统一日志收集平台。
2.3.2 多环境标准化配置
# 生产环境 logfile /usr/local/redis/logs/redis-prod.log loglevel warning # 测试环境 logfile /data/logs/redis-test.log loglevel notice # 开发环境 logfile /data/logs/redis-dev.log loglevel verbose
2.3.3 运维配套规范

生产环境必须搭配logrotate日志切割策略,按天切割、保留7天日志、自动压缩归档,避免单日志文件过大占用磁盘,配置规则见前文6.3章节。

2.4 持久化核心配置

Redis持久化用于将内存数据落地磁盘,防止服务重启、宕机导致数据丢失,包含RDB快照、AOF日志两种方式,各环境按需组合配置,兼顾性能与数据安全性。

2.4.1 RDB持久化(快照持久化)

核心原理:按指定时间间隔,触发内存数据全量快照,写入RDB文件,性能高、恢复速度快,适合冷备份。

  • save:RDB触发规则,格式为 save 秒数 数据修改次数,满足任一条件即触发快照: 生产默认:save 900 1、save 300 10、save 60 10000; 测试环境:save 300 10; 开发环境:save "" 关闭RDB。
  • rdbcompression:开启RDB文件压缩,默认yes,节省磁盘空间,轻微消耗CPU,生产开启。
  • rdbchecksum:开启RDB文件校验,防止文件损坏,保障数据完整性。
2.4.2 AOF持久化(日志持久化)

核心原理:记录每一条写入操作指令,重启时重放指令恢复数据,数据安全性极高,可实现秒级数据不丢失。

  • appendonly:是否开启AOF,生产yes,测试/开发no。
  • appendfsync:AOF刷盘策略,核心三级策略: 1. always:每条写入立即刷盘,数据最安全,性能最差; 2. everysec:每秒批量刷盘,平衡性能与安全性,生产首选; 3. no:交由系统自动刷盘,性能最高,数据安全性差。
  • auto-aof-rewrite-percentage/min-size:AOF文件重写触发条件,避免日志文件无限膨胀,默认100%增量、最小64M,生产默认适配即可。
2.4.3 多环境标准化持久化方案
# 生产环境(RDB+AOF双持久化,高安全) save 900 1 save 300 10 save 60 10000 rdbcompression yes appendonly yes appendfsync everysec # 测试环境(仅RDB,兼顾性能与基础数据留存) save 300 10 rdbcompression yes appendonly no # 开发环境(全关闭,极致性能) save "" appendonly no
2.4.4 核心避坑要点

生产环境禁止单独使用RDB,存在分钟级数据丢失风险;禁止单独高频AOF,会损耗性能;双持久化组合是生产最优方案。开发环境关闭持久化,可大幅提升Redis读写性能,适配调试场景。

2.5 通用安全配置(配套核心优化)

搭配四大核心配置的生产安全必配项,规避误操作与非法访问:

# 密码认证 requirepass 自定义强密码 # 禁用高危命令 rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command KEYS ""

单机性能压测、基准数据查看与基础参数调优

Redis 官方自带redis-benchmark压测工具,无需额外部署,是单机压测的最佳选择;基准数据基于通用服务器硬件给出行业标准值;调优分为操作系统内核调优(核心)、Redis 配置调优运行时优化三层,新手可直接照搬命令落地。

一、Redis 单机压测(redis-benchmark 实战)

​redis-benchmark​​ 是 Redis 原生自带的基准测试工具,支持并发、指定命令、数据大小、Pipeline 等压测场景,随 Redis 安装包自动部署,直接在服务器终端执行即可。

核心常用参数

表格

参数

作用

示例

-h

Redis 主机 IP

-h 127.0.0.1

-p

Redis 端口

-p 6379

-a

Redis 密码(有密码才加)

-a 123456

-c

并发连接数

-c 100(100 个并发)

-n

总请求数

-n 100000(10 万请求)

-d

数据大小(字节)

-d 32(32 字节 value)

-t

指定测试命令

-t get,set(只测 GET/SET)

--threads

多线程压测(Redis6+)

--threads 4

-P

Pipeline 批量命令数

-P 100(100 个命令批量发)

-q

精简输出结果

-

实战压测命令(直接复制执行)

(1)默认全命令压测

压测所有常用命令,默认 10 万请求、50 并发、3 字节数据:

bash

运行

redis-benchmark -h 127.0.0.1 -p 6379 -q
(2)指定 GET/SET 核心命令压测(最常用)

100 并发、10 万请求、32 字节数据,只测 GET/SET:

bash

运行

redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000 -d 32 -t get,set -q
(3)Pipeline 压测(极限提升 QPS)

Pipeline 是 Redis 性能提升的关键,批量发送命令减少网络开销:

bash

运行

# 100个命令批量发送,100并发,10万请求 redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000 -P 100 -t get,set -q
(4)带密码、多线程压测

bash

运行

redis-benchmark -h 127.0.0.1 -p 6379 -a 123456 -c 200 -n 200000 --threads 4 -q

压测结果解读

重点关注 3 个核心指标:

  1. QPS:每秒处理请求数(性能核心);
  2. 延迟avg(平均延迟)、p99(99% 请求的最大延迟,毛刺关键);
  3. 错误率:必须为 0,否则说明压测 / 配置异常。

示例输出:

plaintext

SET: 112000.00 requests per second GET: 115000.00 requests per second

二、Redis 单机基准性能数据(行业标准)

基于通用云服务器(2 核 4G、千兆网卡、SSD、Redis 7.0、无持久化、内核调优后)的单机基准:

表格

压测场景

数据大小

QPS(每秒请求数)

平均延迟

无 Pipeline GET

10B

~11 万

<1ms

无 Pipeline SET

10B

~10 万

<1ms

Pipeline(100) GET

10B

~60 万 +

<2ms

Pipeline(100) SET

10B

~50 万 +

<2ms

关键影响因素

  1. 持久化:开启 AOF 的always会让 QPS 暴跌 90%;
  2. 数据大小:value 越大,QPS 越低(1KB 数据 QPS 会降至 5 万左右);
  3. 命令复杂度KEYS *HGETALL等慢命令会大幅拉低性能;
  4. CPU:Redis 单线程工作,单核性能直接决定 QPS 上限。

实时查看 Redis 运行基准

连接 Redis 执行​​info​​命令,查看实时性能数据:

bash

运行

redis-cli -p 6379 info stats

核心字段:

  • ​instantaneous_ops_per_sec​​:实时 QPS
  • ​total_commands_processed​​:总处理命令数。

三、Redis 单机基础参数调优(三步落地)

调优优先级:操作系统内核 > Redis 配置 > 运行时优化,以下命令全部可直接执行,适配 CentOS/Ubuntu。

第一步:操作系统内核调优(必须做,性能提升 50%+)

Redis 是内存 + 网络型应用,内核参数是性能瓶颈的核心。

禁用 Swap(防止内存置换导致延迟暴增)

bash

运行

# 临时禁用echo 0 > /proc/sys/vm/swappiness # 永久禁用(重启生效)echo "vm.swappiness=0" >> /etc/sysctl.conf
开启内存过量分配(避免 Redis OOM 崩溃)

bash

运行

# 临时生效echo 1 > /proc/sys/vm/overcommit_memory # 永久生效echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
优化网络参数(减少连接开销)

bash

运行

cat >> /etc/sysctl.conf << EOF net.core.somaxconn = 65535 net.core.netdev_max_backlog = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 30 EOF# 加载内核参数sysctl -p
禁用透明大页 THP(导致 Redis 延迟毛刺)

bash

运行

# 临时禁用echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag # 永久禁用(开机自执行)cat >> /etc/rc.local << EOF echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag EOF
提升最大文件描述符(解决连接数上限)

bash

运行

cat >> /etc/security/limits.conf << EOF redis soft nofile 65535 redis hard nofile 65535 root soft nofile 65535 root hard nofile 65535 EOF

第二步:Redis 配置文件调优(redis.conf)

修改 Redis 核心配置,重启后生效,路径:/etc/redis/redis.conf

ini

# 1. 网络优化 bind 内网IP # 只监听内网,避免外网攻击 protected-mode no # 关闭保护模式(内网环境) timeout 0 # 长连接,不主动断开 tcp-keepalive 300 # 心跳保活 # 2. 内存优化(核心) maxmemory 3G # 单机最大内存(物理内存的70%,4G机器设3G) maxmemory-policy allkeys-lru # 内存满后删除最少使用的key lazyfree-lazy-eviction yes # 惰性删除,避免阻塞主线程 # 3. 持久化优化(性能优先)# 关闭自动RDB持久化(注释掉所有save行)# save 3600 1# save 300 100# save 60 10000 appendonly no # 关闭AOF(追求极致性能) # 若必须开AOF,用这个配置:appendfsync everysec(每秒刷盘,平衡性能/安全)# 4. 客户端优化 maxclients 10000 # 最大连接数

修改后重启 Redis:

bash

运行

systemctl restart redis-server

第三步:运行时优化(无侵入,提升性能)

  1. 绑定 CPU 核心:Redis 单线程工作,绑定独占 CPU,减少上下文切换
  2. bash
  3. 运行
taskset -c 0 redis-server /etc/redis/redis.conf
  1. 禁用慢命令:禁止使用KEYS *HGETALLSMEMBERS,用SCAN系列命令代替;
  2. 使用连接池:业务端用 Redis 连接池,避免频繁创建 / 销毁连接;
  3. 批量操作:业务中强制使用 Pipeline,减少网络 IO。

四、调优后验证

  1. 重新执行压测命令,对比 QPS 和延迟:
  2. bash
  3. 运行
redis-benchmark -c 100 -n 100000 -t get,set -q
  1. 查看实时 QPS:
  2. bash
  3. 运行
redis-cli info stats | grep instantaneous_ops_per_sec
  1. 查看内存 / 配置是否生效:
  2. bash
  3. 运行
redis-cli config get maxmemory redis-cli config get appendonly

总结

  1. 压测:用redis-benchmark,核心加-P开启 Pipeline,重点看 QPS 和 p99 延迟;
  2. 基准:单机无 Pipeline GET~11 万 QPS,Pipeline 后~60 万 QPS;
  3. 调优:先改内核(禁 Swap/THP、网络参数),再调 Redis 配置(内存 / 持久化),最后优化业务使用(Pipeline、禁慢命令)。

按照以上步骤操作,普通 2 核服务器的 Redis 单机 QPS 可轻松达到10 万 +,Pipeline 场景突破50 万 +

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 15:59:47

5分钟永久备份QQ空间所有历史说说:GetQzonehistory完整使用指南

5分钟永久备份QQ空间所有历史说说&#xff1a;GetQzonehistory完整使用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾经担心那些承载着青春记忆的QQ空间说说会随着时间消…

作者头像 李华
网站建设 2026/5/31 15:59:45

EAST放电管理系统开发实现【附程序】

✨ 长期致力于EAST、放电方案、MDSplus、方案优选、放电日程研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;放电方案解析与MDSplus数据融合接口&…

作者头像 李华
网站建设 2026/5/31 15:59:42

Arduino骰子机:从GPIO控制到PWM音效的嵌入式入门实践

1. 项目概述&#xff1a;一个会“说话”的电子骰子如果你玩过桌面游戏&#xff0c;肯定对掷骰子决定命运的时刻不陌生。传统的骰子依赖物理碰撞和重力&#xff0c;结果充满了不确定性。但作为一个电子爱好者&#xff0c;我总在想&#xff0c;能不能用代码来“驯服”这种随机性&…

作者头像 李华
网站建设 2026/5/31 15:58:39

高级分析的前 5 个地理空间数据 API

原文&#xff1a;towardsdatascience.com/top-5-geospatial-data-apis-for-advanced-analysis-79349605c86d https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/8f77c7bff0dc1c4b9e519795f27f899e.png Kyle Glenn 在 Unsplash&#xff08;来…

作者头像 李华
网站建设 2026/5/31 15:56:40

告别‘一键安装’:手把手教你用DISM命令离线部署Win11必备的APPX驱动(Intel/NVIDIA控制面板等)

深度解析Win11离线部署APPX驱动的完整技术方案在Windows 11系统部署过程中&#xff0c;硬件厂商将关键驱动和控制面板转为微软商店APPX应用的趋势越来越明显。这种变化给IT技术人员和高级用户带来了新的挑战——如何在离线环境下或系统初始化阶段预装这些必备组件&#xff1f;本…

作者头像 李华