redis—serverCron介绍

what:

  serverCron

    serverCron函数是管理Redis服务器资源的,是Redis良好运行的保证。

    

  serverCron和RedisServer的关系

    它们的关系就是:serverCron函数是通过更新RedisServer对象的的变量来进行管理Redis服务器的资源

    redisServer结构如下:

    redisServer{
      unixtime:秒级(缓存)
      mstime:毫秒级(缓存)
      lruclock:用来记录当前时间的(缓存)。每10秒更新一次,因此这个值是模糊的。
      stat_peak_memory:已使用的内存峰值。可以用info memory查看,这个可以用来作为内存淘汰机制触发的依据。
      shutdown_asap:关闭服务器的标识。每次serverCron函数运行时,都会对这个shutdown_asap进行检查,看是否要关闭服务器。shutdown命令可修改shutdown_asap的状态值
      clientsCron函数:用来管理客户端资源。比如检查客户端和服务端的连接是否超时。客户端的输入缓冲区是否耗费过多内存
      databasesCron函数:检查过期建,并删除
      rdb_child_pid:检查持久化操作的运行状态。如下
      aof_child_pid:检查持久化操作的运行状态。如下
        ...省略,其他细节的可以自行去看redis的源码
    }

    上面是redisServer结构,转换成java,其实redisServer就是一个对象,下面维护着一堆变量,这些变量,其实就是redis服务器的各种身体指标。然后通过serverCron函数来定期更新各个身体指标,serverCron函数就类似一个定时体检。大概就是100毫秒检查一次,也就是1秒检查10次。

 

How:

  serverCron函数具体是做了什么?

    1、更新服务器的各类统计信息;

    2、清理数据库中的过期键值对,这个可以具体分为惰性删除和定时删除;

    3、关闭和清理连接失效的客户端,为了不浪费内存资源;

    4、尝试进行AOF或RDB持久化操作

    5、同步数据。如果服务器是主服务器,还需要对从服务器进行定期同步;

    6、心跳检测。如果处于集群模式,对集群进行定期同步和连接测试;

 

posted @ 2022-08-05 16:16  修心而结网  阅读(241)  评论(0编辑  收藏  举报