使用 Redis 的 slowlog get [n] 慢查詢日志徹底解決生產問題!


或多或少,你們可能聽過 MySQL 的慢查詢日志。其實 Redis 也有,而且 Redis 的慢查詢日志對性能的影響很小,因為它就保存在內存中。

slowlog 是 Redis 用來記錄查詢執行時間的日志系統。注意,這個查詢執行時間指的是不包括像客戶端響應(talking)、發送回復等 IO 操作,而單單是執行一個查詢命令所耗費的時間。 

 

slowlog 保存在內存里面,讀寫速度非常快,因此我們可以放心地使用它,不必擔心因為開啟 slowlog 而損害 Redis 的速度。

slowlog 有兩個重要的配置,我們先通過 CONFIG GET slowlog-* 命令來查看現有的配置。

1

2

3

4

5

127.0.0.1:6379> CONFIG GET slowlog-*

1) "slowlog-log-slower-than"

2) "100"

3) "slowlog-max-len"

4) "1024"

slowlog-log-slower-than 代表慢查詢的閾值,單位為:微秒。當執行查詢命令消耗時間大於配置的閾值時,會將該條命令記錄到慢查詢日志。當 slowlog-log-slower-than=0 時,記錄所有命令。slowlog-log-slower-than<0 時,不記錄任何命令。slowlog-log-slower-than 的默認值為 10000 (10毫秒,1秒 = 1,000毫秒 = 1,000,000微秒)。

slowlog-max-len 代表慢查詢日志最大條數。它是一個隊列形式的存儲結構,先進先出的隊列,即當慢查詢日志達到最大條數后,會銷毀最早記錄的日志條目。slowlog-max-len 的默認值為 128,保存在內存內,所以重啟 redis 會清空慢查詢日志。

配置 slowlog-log-slower-than 和 slowlog-max-len 的命令非常簡單,如下:

1

2

CONFIG SET slowlog-log-slower-than 100

CONFIG SET slowlog-max-len 1024

使用 SLOWLOG LEN 命令,查詢當前的慢查詢日志記錄數。

1

2

127.0.0.1:6379> SLOWLOG LEN

(integer) 2019

當我們只需要查詢前幾個慢查詢記錄時,可以使用 SLOWLOG GET [n] 命令。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

127.0.0.1:6379> SLOWLOG GET 3

1) 1) (integer) 14                # 唯一性(unique)的日志標識符

   2) (integer) 1522808219        # 被記錄命令的執行時間點,以 UNIX 時間戳格式表示

   3) (integer) 16                # 查詢執行時間,以微秒為單位

   4) 1) "keys"                   # 執行的命令,以數組的形式排列

      2) "*"                      # 這里完整的命令是 "keys *"

2) 1) (integer) 13

   2) (integer) 1522808215

   3) (integer) 7

   4) 1) "set"

      2) "name"

      3) "baicai"

3) 1) (integer) 12

   2) (integer) 1522808198

   3) (integer) 101

   4) 1) "set"

      2) "age"

      3) "25"

SLOWLOG GET [n] 若不加 n ,則獲取全部慢查詢記錄。

清空慢查詢日志使用 SLOWLOG RESET。注意,slowlog-log-slower-than 不要設置過大,設置過大有可能一條記錄也不會記錄。

參考地址 https://www.xttblog.com/?p=3708
————————————————
版權聲明:本文為CSDN博主「那些年的代碼」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_44018338/article/details/99460667


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM