一文带你相识 Redis 的慢日记相干底层道理
副问题[/!--empirenews.page--]
信托许多小搭档在行使 Redis 的时辰都知道 Redis 有相干慢日记的查询成果,而且多几几何都看过。那 Redis 底层到底是假如建设慢日记以及慢日记的布局是什么样子的呢?这篇文章就带各人熟悉一下。我们先看一张慢日记的截图 行使slowlog get 2呼吁查察最近的两条慢日记信息,如上图,我们可以看到每条日记中包括的信息有六个部门构成,从上到下编号为 0-5,依次代表的意思是 0:日记的独一编号 ID 1:呼吁执行的当前时刻戳 2:呼吁执行的耗时时长,单元玄妙 3:详细的执行呼吁和参数 4:客户端的 ip 和端口(4.0 版本以上才支持) 5:客户端名称(4.0 版本以上支持) 如上图所示,第一条慢日记的 ID 是 41,呼吁执行的时刻戳是 1575729996,而且执行了 16129 玄妙,详细执行的呼吁就是slowlog get,ip 和端口是27.38.56.88:8223,客户端的名称没有配置。 02、慢日记呼吁配置查察呼吁 上面我们已经或许的知道的一条慢日记的名目,天然的我们可以想到的题目是一个呼吁执行多长时刻,我们就可以以为是慢查询,以及慢日记最多能生涯几多条。 我们可以通过config get slowlog-log-slower-than 呼吁来查察 Redis 的时长配置,以及通过config get slowlog-max-len 来查察最大慢日记条数。如下图。 配置呼吁 上面我们行使config get 呼吁查察了时长配置和条数配置,相反的我们可以用config set来配置相干参数,如下图,我们先查察一下设置,然后再通过config set slowlog-log-slower-than 1000 呼吁和 config set slowlog-max-len 64 呼吁来配置详细的值: 通过上面的操纵我们可以看到相干的设置已经变动见效了。 slowlog-log-slower-than:这个参数的意思是任何呼吁执行高出这个时刻就会被记录为慢日记,单元是微秒。 slowlog-max-len:这个参数暗示记录的慢日记的最大条数,配置了这个值事后,新的日记加进来,ID 最小的日记就会被删除。 为了验证上面的第二点,我这边将slowlog-log-slower-than配置为 10 微秒,slowlog-max-len 配置为 5 条来举办试验,起首第一次行使slowlog get呼吁查询的时辰 5 条慢日记的编号是从 83-87, 再次行使slowlog get呼吁查询的编号功效是84-88,声名 ID 为 83 的那一条已经被删除了。 03、慢日记的存储道理存储布局 struct redisServer { long long slowlog_entry_id;//下一条慢查询日记的 ID list *slowlog;//生涯了全部慢查询日记的链表 long long slowlog_log_slower_than;//处事器设置 slowlog-log-slower-than 选项的值 unsigned long slowlog_max_len;//处事器设置的 slowlog-max-len 的值 } 在 Redis 的处事器状态中生涯了慢日记的相干属性slowlog_entry_id 属性的初始值是 0 每建设一条慢日记的时辰就会增进 1。 slowlog 链表内里存储了全部的慢日记,,链表是由slowlogEntry布局构成的,每个slowlogEntry代表一条慢日记。 slowlog_log_slower_than 和 slowlog_max_len 是前面处事器设置的相干参数。 slowlog 链表 typedef struct slowlogEntry { long long id;//独一标识符 time_t time; //呼吁执行的时刻,名目为 unix 时刻戳 long long duration;//呼吁耗损的时刻,以微秒为单元 robj **argv;//呼吁与呼吁参数 int argc; //呼吁与呼吁参数个数 } slowlogEntry; (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |