zoukankan      html  css  js  c++  java
  • redis内部会导致主线程阻塞的点以及对应的解决方案

    本文主要介绍redis内部会导致主线程阻塞的点以及对应的解决方案。

    主要阻塞点

    redis内部主要有五个阻塞点,其中三个可以通过异步解决,从而避开对redis主线程的阻塞。如下图所示。

    redis异步机制

    Redis启动后,会创建三个子线程用于aof日志异步写入,异步数据删除(bigkey删除和清空数据库)以及异步文件关闭。

    无法异步的阻塞操作优化

    集合操作和RDB加载属于redis操作的关键路径(客户端必须要拿到真正的执行结果)是没办法做成异步操作的,对于这两类操作只能做优化,最大可能的降低阻塞的时间。

    集合操作优化

    可以少量scan,分批读取数据,然后到客户端进行聚合,把工作由redis server移到客户端

    RDB加载优化

    控制redis数据量的大小,控制在2-4GB,这样rdb会以较快的速度加载。

    作者:iBrake
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    MySQL-事务原理
    MySQL-索引原理
    SQL-查询前N条记录
    Shell-配置libpath环境变量
    PG-Vacuum
    python连接mysql数据库
    Spark SQL 基本操作
    spark-shell 交互式编程
    Scala统计学生成绩
    Scala模拟图形绘制
  • 原文地址:https://www.cnblogs.com/Brake/p/14341503.html
Copyright © 2011-2022 走看看