Redis优化建议详解

news/2025/1/14 20:57:34/

Redis优化建议详解

1. 内存优化

1.1 内存配置

设置最大内存
maxmemory 4gb
内存淘汰策略
maxmemory-policy allkeys-lru
样本数量
maxmemory-samples 5

1.2 内存优化策略

  1. 数据结构优化

    • 使用压缩列表(ziplist)
    • 合理设置hash-max-ziplist-entries
    • 使用整数集合(intset)存储整数
  2. 键值设计优化

    • 缩短键名长度
    • 压缩值的内容
    • 使用整数代替字符串
  3. 避免内存碎片

    • 设置合适的maxmemory
    • 定期执行MEMORY PURGE
    • 使用jemalloc内存分配器

2. 持久化优化

2.1 RDB优化


配置自动保存策略
save 900 1
save 300 10
save 60 10000
压缩RDB文件
rdbcompression yes
开启校验和
rdbchecksum yes

2.2 AOF优化

设置AOF策略
appendonly yes
appendfsync everysec
重写配置
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

3. 网络优化

3.1 连接优化

最大连接数
maxclients 10000
TCP keepalive
tcp-keepalive 300
超时设置
timeout 300

3.2 网络配置优化

  1. 系统参数调整
/etc/sysctl.conf
net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 2048
  1. 网络带宽优化
    • 使用内网通信
    • 合理设置buffer大小
    • 启用TCP BBR算法

4. 命令优化

4.1 慢查询优化

设置慢查询阈值
slowlog-log-slower-than 10000
慢查询记录数
slowlog-max-len 128

4.2 命令使用建议

  1. 避免使用危险命令

    • KEYS
    • FLUSHALL
    • FLUSHDB
  2. 批量操作优化

    • 使用MGET/MSET
    • 使用管道Pipeline
    • 合理使用事务

5. 架构优化

5.1 主从架构优化

主节点配置
min-slaves-to-write 1
min-slaves-max-lag 10
从节点配置
slave-serve-stale-data yes
slave-read-only yes

5.2 集群优化

集群配置
cluster-node-timeout 5000
cluster-migration-barrier 1
cluster-require-full-coverage no

6. 操作系统优化

6.1 系统参数优化

/etc/sysctl.conf
vm.overcommit_memory = 1
vm.swappiness = 0
net.core.somaxconn = 2048

6.2 文件系统优化

调整文件描述符限制
ulimit -n 65535
使用XFS或ext4文件系统
关闭atime更新
mount -o noatime /dev/sda1 /data

7. 应用层优化

7.1 客户端优化

  1. 连接池配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(100);
config.setMaxIdle(20);
config.setMinIdle(10);
  1. 超时设置
jedis.configSet("timeout", "5000");
jedis.configSet("tcp-keepalive", "300");

7.2 业务优化建议

  1. 缓存策略优化

    • 合理设置过期时间
    • 使用缓存预热
    • 实施缓存降级
  2. 数据结构选择

    • String:简单键值对
    • Hash:对象属性
    • List:队列操作
    • Set:去重功能
    • Sorted Set:排行榜

8. 监控优化

8.1 性能指标监控

监控命令
redis-cli info | grep instantaneous_ops_per_sec
redis-cli info | grep used_memory
redis-cli info | grep connected_clients

8.2 告警阈值设置

  1. 关键指标
    • CPU使用率 > 80%
    • 内存使用率 > 90%
    • 连接数 > maxclients的80%
    • 慢查询数量突增

9. 开发规范

9.1 键值设计规范

  1. 命名规范

    • 业务名:表名:id
    • 使用冒号分隔
    • 统一小写
  2. 过期时间规范

    • 统一设置过期时间
    • 避免永久键
    • 使用EXPIRE设置过期

10. 运维优化

10.1 部署优化

  1. 硬件选择

    • 使用SSD
    • 足够的内存
    • 高性能CPU
  2. 网络部署

    • 主从同机房
    • 专用网络
    • 冗余链路

10.2 备份策略

自动备份脚本
#!/bin/bash
redis-cli BGSAVE
cp dump.rdb /backup/redis_$(date +%Y%m%d).rdb

http://www.ppmy.cn/news/1563123.html

相关文章

LVS 支持 UDP 协议代理

在现代网络架构中,负载均衡技术是保证高可用性和高性能的关键组成部分。Linux Virtual Server(LVS)作为一个高效、稳定的负载均衡解决方案,广泛应用于处理 TCP 流量的场景。然而,随着实时通信、视频流和在线游戏等应用的不断发展,UDP 协议的支持成为了 LVS 负载均衡的重要…

【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列

系列文章目录 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀 文章目录 系列文章目录前言 🍃一、实体对象更新1.1 单条与批量1.2 不更新某列1.3 只更新某列1.4 NULL列不更新1.5 无主键/指定列…

什么是TCP重传率,有什么用?如何查看?

TCP重传率是一个衡量TCP网络性能的重要指标,它指的是在TCP通信过程中,由于数据包丢失、损坏或确认(ACK)未按预期到达而导致的数据包重传的比例或率。 TCP协议通过重传机制来保证数据传输的可靠性,但过高的重传率通常意味着网络质量问题&…

作用域、this上下文、闭包

作用域(静态分析) 作用域是定义变量和访问变量的范围。 作用域可以通过静态分析,不需要运行代码,就可以分析出当前作用域。 作用域分为:全局作用域、函数作用域、块级作用域。 全局作用域:在顶层声明的…

一个使用 Golang 编写的新一代网络爬虫框架,支持JS动态内容爬取

大家好,今天给大家分享一个由ProjectDiscovery组织开发的开源“下一代爬虫框架”Katana,旨在提供高效、灵活且功能丰富的网络爬取体验,适用于各种自动化管道和数据收集任务。 项目介绍 Katana 是 ProjectDiscovery 精心打造的命令行界面&…

Swagger学习⑰——@Link注解

介绍 Link 是 Swagger/OpenAPI 3.0 注解库中的一个注解,用于在 OpenAPI 文档中定义链接(Link)。链接是一种在 API 响应中提供相关操作或资源引用的机制,通常用于描述操作之间的关系或提供额外的操作提示。 Link 注解的作用 Link…

计算机网络 (39)TCP的运输连接管理

前言 TCP(传输控制协议)是一种面向连接的、可靠的传输协议,它在计算机网络中扮演着至关重要的角色。TCP的运输连接管理涉及连接建立、数据传送和连接释放三个阶段。 一、TCP的连接建立 TCP的连接建立采用三次握手机制,其过程如下&…

【Linux网络编程】数据链路层 | MAC帧 | ARP协议

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系…