Redis优化发起详解

莱莱  金牌会员 | 2025-1-11 07:11:59 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 836|帖子 836|积分 2508

Redis优化发起详解

1. 内存优化

1.1 内存配置

  1. 设置最大内存
  2. maxmemory 4gb
  3. 内存淘汰策略
  4. maxmemory-policy allkeys-lru
  5. 样本数量
  6. maxmemory-samples 5
复制代码
1.2 内存优化策略


  • 数据结构优化

    • 使用压缩列表(ziplist)
    • 公道设置hash-max-ziplist-entries
    • 使用整数集合(intset)存储整数

  • 键值设计优化

    • 缩短键名长度
    • 压缩值的内容
    • 使用整数代替字符串

  • 避免内存碎片

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

2. 持久化优化

2.1 RDB优化

  1. 配置自动保存策略
  2. save 900 1
  3. save 300 10
  4. save 60 10000
  5. 压缩RDB文件
  6. rdbcompression yes
  7. 开启校验和
  8. rdbchecksum yes
复制代码
2.2 AOF优化

  1. 设置AOF策略
  2. appendonly yes
  3. appendfsync everysec
  4. 重写配置
  5. auto-aof-rewrite-percentage 100
  6. auto-aof-rewrite-min-size 64mb
复制代码
3. 网络优化

3.1 毗连优化

  1. 最大连接数
  2. maxclients 10000
  3. TCP keepalive
  4. tcp-keepalive 300
  5. 超时设置
  6. timeout 300
复制代码
3.2 网络配置优化


  • 系统参数调解
  1. /etc/sysctl.conf
  2. net.core.somaxconn = 2048
  3. net.ipv4.tcp_max_syn_backlog = 2048
复制代码

  • 网络带宽优化

    • 使用内网通讯
    • 公道设置buffer巨细
    • 启用TCP BBR算法

4. 下令优化

4.1 慢查询优化

  1. 设置慢查询阈值
  2. slowlog-log-slower-than 10000
  3. 慢查询记录数
  4. slowlog-max-len 128
复制代码
4.2 下令使用发起


  • 避免使用伤害下令

    • KEYS
    • FLUSHALL
    • FLUSHDB

  • 批量操作优化

    • 使用MGET/MSET
    • 使用管道Pipeline
    • 公道使用事务

5. 架构优化

5.1 主从架构优化

  1. 主节点配置
  2. min-slaves-to-write 1
  3. min-slaves-max-lag 10
  4. 从节点配置
  5. slave-serve-stale-data yes
  6. slave-read-only yes
复制代码
5.2 集群优化

  1. 集群配置
  2. cluster-node-timeout 5000
  3. cluster-migration-barrier 1
  4. cluster-require-full-coverage no
复制代码
6. 操作系统优化

6.1 系统参数优化

  1. /etc/sysctl.conf
  2. vm.overcommit_memory = 1
  3. vm.swappiness = 0
  4. net.core.somaxconn = 2048
复制代码
6.2 文件系统优化

  1. 调整文件描述符限制
  2. ulimit -n 65535
  3. 使用XFS或ext4文件系统
  4. 关闭atime更新
  5. mount -o noatime /dev/sda1 /data
复制代码
7. 应用层优化

7.1 客户端优化


  • 毗连池配置
  1. JedisPoolConfig config = new JedisPoolConfig();
  2. config.setMaxTotal(100);
  3. config.setMaxIdle(20);
  4. config.setMinIdle(10);
复制代码

  • 超时设置
  1. jedis.configSet("timeout", "5000");
  2. jedis.configSet("tcp-keepalive", "300");
复制代码
7.2 业务优化发起


  • 缓存策略优化

    • 公道设置逾期时间
    • 使用缓存预热
    • 实施缓存降级

  • 数据结构选择

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

8. 监控优化

8.1 性能指标监控

  1. 监控命令
  2. redis-cli info | grep instantaneous_ops_per_sec
  3. redis-cli info | grep used_memory
  4. redis-cli info | grep connected_clients
复制代码
8.2 告警阈值设置


  • 关键指标

    • CPU使用率 > 80%
    • 内存使用率 > 90%
    • 毗连数 > maxclients的80%
    • 慢查询数量突增

9. 开发规范

9.1 键值设计规范


  • 命名规范

    • 业务名:表名:id
    • 使用冒号分隔
    • 同一小写

  • 逾期时间规范

    • 同一设置逾期时间
    • 避免永久键
    • 使用EXPIRE设置逾期

10. 运维优化

10.1 部署优化


  • 硬件选择

    • 使用SSD
    • 足够的内存
    • 高性能CPU

  • 网络部署

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

10.2 备份策略

  1. 自动备份脚本
  2. #!/bin/bash
  3. redis-cli BGSAVE
  4. cp dump.rdb /backup/redis_$(date +%Y%m%d).rdb
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表