或多或少,你們可能聽過 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