redis清除内存碎片的方法有哪些_redis内存优化

redis清除内存碎片的方法有哪些_redis内存优化在Redis 4.O-RC3版本之后,Redis自身提供了一种清除内存碎片的方法 清除的原理很简单,通过复制拷贝将不连续的存放的数据搬到一起形成一块连续的内存空间,如下图: 如上图,清除之前A和B不…

redis清除内存碎片的方法

在Redis 4.O-RC3版本之后,Redis自身提供了一种清除内存碎片的方法

清除的原理很简单,通过复制拷贝将不连续的存放的数据搬到一起形成一块连续的内存空间,如下图:

redis清除内存碎片的方法有哪些_redis内存优化

如上图,清除之前A和B不是连续的,中间隔着两个字节空闲1,但是在执行清除内存碎片操作之后,Redis拷贝了B到空闲1,释放掉之前B的空间,此时空闲1和空闲2则变成了连续的空闲空间了。

那么问题来了,这种方式固然好,但是对于单线程的Redis来说,通过这种拷贝复制的方式显然是一种耗时的操作,性能大大降低,那么有什么好的方法呢?

Redis提供了参数配置,可以控制清除内存碎片的时机,命令如下:

config set activedefrag yes

以上命令启动自动清理,但是具体什么时候清理,还要受以下两个参数的影响:

  1. active-defrag-ignore-bytes 400mb:如果内存碎片达到了408mb,开始清理(自定义)
  2. active-defrag-threshold-lower 20:内存碎片空间占操作系统分配给Redis的总空间比例达到20%时,开始清理(自定义)

以上两个参数只有全部满足才会开始清理

除了以上触发清理内存碎片的参数,Redis还提供了两个参数来保证在清理过程中不影响处理正常的请求,如下:

1. active-defrag-cycle-min 25:表示自动清理过程所用CPU时间的比例不低于25%,保证清理能正常开展

2. active-defrag-cycle-max 75:表示自动清理过程所用CPU时间的比例不高于75%,一旦超过,就停止清理,从而避免在清理时,大量的内存拷贝阻塞 Redis,导致响应延迟升高。

以上两个参数控制了清理过程中的CPU时间占比,保证了正常处理请求不受影响

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6412.html

(0)
上一篇 2023-04-10
下一篇 2023-04-10

相关推荐

  • DB2 添加catalog[亲测有效]

    DB2 添加catalog[亲测有效]db2 catalog tcpip node node别名 remote IP地址 server 50000 db2 catalog db 数据库名称 as 数据库别名 at node node别名…

    2023-03-07
    161
  • Python Class:定义和使用类来组织代码

    Python Class:定义和使用类来组织代码Python是一种简单易学的编程语言。使用Python开发应用程序,涉及到的代码量往往比其他语言要少,提高了程序的开发效率。在Python中,类是一种非常重要而且强大的机制,它可以帮助开发者组织代码并且降低代码的重复性。类的使用方式类似于其他面向对象的编程语言,比如Java、C++等。

    2024-01-20
    101
  • mysql用户管理_MySQL实战45讲

    mysql用户管理_MySQL实战45讲本文介绍 MySQL45 讲中提到的一个用户关注的案例,并记录下可行的处理方案。

    2023-04-22
    158
  • 混沌算法原理_混沌工程

    混沌算法原理_混沌工程本篇文章整理自我司研发工程师杨可奥以及 PingCAP 工程效率负责人、Chaos Mesh 负责人周强在 GoCN 开源说上的演讲实录。 本文首先介绍了对混沌工程这一概念的描述,分享了混沌工程的动…

    2023-04-13
    153
  • 低版本sqlserver客户端连接高版本数据库_低版本sqlserver附加高版本数据库

    低版本sqlserver客户端连接高版本数据库_低版本sqlserver附加高版本数据库帮人分析解决一个YourSQLDba备份报错问题,个人觉得有点意思,顺手记录一下分析思路,大体解决思路如下: 首先,找到YourSQLDba作业YourSQLDba_FullBackups_And_M

    2023-02-26
    155
  • 以三引号的妙用

    以三引号的妙用Python是一门高级编程语言,它的语法简单易学,同时也非常强大。在Python的语法中,有一种特殊的字符串类型——三引号字符串(triple quoted strings)。在Python开发中,使用三引号可以完成很多的任务,包括书写文档,编写测试用例和编写注释等等。本文将探讨Python中三引号的妙用。

    2024-05-21
    97
  • 基于Pycharm的Python开发

    基于Pycharm的Python开发随着Python的火热发展,越来越多的开发者开始使用Python。而Pycharm作为一款强大的Python IDE(集成开发环境),为Python开发者提供了高效、可靠的开发环境。本文将介绍基于Pycharm的Python开发相关内容,帮助读者更好地了解、使用Pycharm。

    2024-04-18
    86
  • MySQL是如何实现事物隔离?[亲测有效]

    MySQL是如何实现事物隔离?[亲测有效]前言 众所周知,MySQL的在RR隔离级别下查询数据,是可以保证数据不受其它事物影响,而在RC隔离级别下只要其它事物commit后,数据都会读到commit之后的数据,那么事物隔离的原理是什么?是通过

    2023-04-16
    153

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注