美文网首页
Redis优化手段

Redis优化手段

作者: 谭英智 | 来源:发表于2022-09-04 16:05 被阅读0次

    避免使用On的操作

    例如sort/sunion/smembers

    缩短键值对的存储长度

    严格控制key的长度

    严格控制value的长度

    严格控制hash set 等结构的数据大小

    限制redis内存大小

    开启内存淘汰策略

    1. noeviction:不淘汰任何数据,当内存不足时,新增操作会报错,Redis 默认内存淘汰策略;
    2. allkeys-lru:淘汰整个键值中最久未使用的键值;
    3. allkeys-random:随机淘汰任意键值;
    4. volatile-lru:淘汰所有设置了过期时间的键值中最久未使用的键值;
    5. volatile-random:随机淘汰设置了过期时间的任意键值;
    6. volatile-ttl:优先淘汰更早过期的键值。
    7. volatile-lfu:淘汰所有设置了过期时间的键值中,最少使用的键值;
    8. allkeys-lfu:淘汰整个键值中最少使用的键值。

    禁用keys命令

    使用lazy free

    异步释放键值对

    把键值对的释放放在单独的线程处理

    减少堆Redis主线程的阻塞

    lazyfree-lazy-eviction no
    lazyfree-lazy-expire no
    lazyfree-lazy-server-del no
    slave-lazy-flush no
    
    • lazyfree-lazy-eviction:表示当 Redis 运行内存超过 maxmeory 时,是否开启 lazy free 机制删除;
    • lazyfree-lazy-expire:表示设置了过期时间的键值,当过期之后是否开启 lazy free 机制删除;
    • lazyfree-lazy-server-del:有些指令在处理已存在的键时,会带有一个隐式的 del 键的操作,比如 rename 命令,当目标键已存在,Redis 会先删除目标键,如果这些目标键是一个 big key,就会造成阻塞删除的问题,此配置表示在这种场景中是否开启 lazy free 机制删除;
    • slave-lazy-flush:针对 slave(从节点) 进行全量数据同步,slave 在加载 master 的 RDB 文件前,会运行 flushall 来清理自己的数据,它表示此时是否开启 lazy free 机制删除。

    设置随机过期时间

    持久化策略

    • 禁用持久化
    • 使用RDB快照
    • AOF与RDB策略
    • 检查条数触发持久化,时间触发持久化

    使用高速固态硬盘作为日志写入

    使用物理机而不是虚拟机

    增加内存,使用redis集群

    禁用swap

    使用pipeline

    使用redis连接池

    避免内存碎片

    • 自动清除碎片

      config set activedefrag yes
      
    • 手动清除碎片

      memory purge
      

    禁用THP特性

    THP:支持大内存页2M分配

    开启了THP时,fork的速度会变慢,每个内存页从原来的4k变为2m,会大幅增加父进程内存消耗

    写命令引起的内存复制放大了512倍

    相关文章

      网友评论

          本文标题:Redis优化手段

          本文链接:https://www.haomeiwen.com/subject/wobunrtx.html