日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

面试突击 004 | 如何排查 Redis 中的慢查询?视频实战篇

發(fā)布時(shí)間:2025/3/11 数据库 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试突击 004 | 如何排查 Redis 中的慢查询?视频实战篇 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是我的第 34?篇原創(chuàng)文章

作者 |?老王(javacn666)

1 面試題

如何排查 Redis 中的慢查詢?

2 涉及相關(guān)問題

  • Redis 中有沒有慢查詢排查工具或者相關(guān)排查手段?

  • 慢查詢?nèi)罩径及男┬畔?#xff1f;

  • 慢查詢的相關(guān)配置項(xiàng)有哪些?默認(rèn)值是啥?應(yīng)該如何設(shè)置?

  • 如果慢查詢的隊(duì)列滿了?會(huì)怎樣?

  • 在代碼中如何實(shí)現(xiàn) Redis 的慢查詢?

  • 3 答案

    首先來說 Redis 中有慢查詢?nèi)罩?#xff0c;是可以實(shí)現(xiàn) Redis 慢操作排查的。

    慢日志包含的內(nèi)容有:

    • 慢查詢的具體執(zhí)行命令;

    • 慢查詢的執(zhí)行時(shí)間;

    • 慢查詢的執(zhí)行時(shí)長。

    慢查詢?nèi)罩緝?nèi)容如下:

    127.0.0.1:6379> slowlog get #慢日志查詢 1) 1) (integer) 2 #慢日志下標(biāo)2) (integer) 1581994139 #執(zhí)行時(shí)間3) (integer) 5 #花費(fèi)時(shí)間 (單位微秒)4) 1) "set" #執(zhí)行的具體命令2) "lang"3) "java"5) "127.0.0.1:47068"6) "" 2) 1) (integer) 12) (integer) 15819941313) (integer) 64) 1) "set"2) "msg"3) "xiaoming"5) "127.0.0.1:47068"6) "" 3) 1) (integer) 02) (integer) 15819940933) (integer) 54) 1) "config"2) "set"3) "slowlog-log-slower-than"4) "0"5) "127.0.0.1:47068"6) ""

    慢日志模擬添加,詳見視頻

    慢日志查詢相關(guān)的配置信息有兩個(gè):

    • slowlog-log-slower-than :用于設(shè)置慢查詢的評定時(shí)間,也就是說超過此配置項(xiàng)的命令,將會(huì)被當(dāng)成慢操作記錄在慢查詢?nèi)罩局?#xff0c;它執(zhí)行單位是微秒 (1 秒等于 1000000 微秒);

    • slowlog-max-len :用來配置慢查詢?nèi)罩镜淖畲笥涗洈?shù)。

    默認(rèn)值如下:

    127.0.0.1:6379> config get slowlog-log-slower-than #慢查詢判斷時(shí)間 1) "slowlog-log-slower-than" 2) "10000" 127.0.0.1:6379> config get slowlog-max-len #慢查詢最大記錄條數(shù) 1) "slowlog-max-len" 2) "128"

    可以看出慢查詢的臨界值是 10000 微秒,默認(rèn)保存 128 條慢查詢記錄。

    4 代碼實(shí)戰(zhàn)

    本文我們使用 Java 來實(shí)現(xiàn)慢查詢?nèi)罩镜牟僮?#xff0c;代碼如下:

    import redis.clients.jedis.Jedis; import redis.clients.jedis.util.Slowlog; import utils.JedisUtils; import java.util.List; /*** 慢查詢*/ public class SlowExample {public static void main(String[] args) {Jedis jedis = JedisUtils.getJedis();// 插入慢查詢(因?yàn)?slowlog-log-slower-than 設(shè)置為 0,所有命令都符合慢操作)jedis.set("db", "java");jedis.set("lang", "java");// 慢查詢記錄的條數(shù)long logLen = jedis.slowlogLen();// 所有慢查詢List<Slowlog> list = jedis.slowlogGet();// 循環(huán)打印for (Slowlog item : list) {System.out.println("慢查詢命令:"+ item.getArgs()+" 執(zhí)行了:"+item.getExecutionTime()+" 微秒");}// 清空慢查詢?nèi)罩緅edis.slowlogReset();} }

    以上代碼執(zhí)行結(jié)果如下:

    慢查詢命令:[SLOWLOG, len] 執(zhí)行了:1 微秒

    慢查詢命令:[SET, lang, java] 執(zhí)行了:2 微秒

    慢查詢命令:[SET, db, java] 執(zhí)行了:4 微秒

    慢查詢命令:[SLOWLOG, reset] 執(zhí)行了:155 微秒

    5 視頻

    視頻內(nèi)容如下:

    6 小結(jié)

    本文我們介紹了慢查詢相關(guān)的兩個(gè)重要參數(shù) slowlog-log-slower-than (用于設(shè)置慢查詢的評定時(shí)間) 和 slowlog-max-len 用來配置慢查詢?nèi)罩镜淖畲笥涗洈?shù),然后通過修改 config set slowlog-log-slower-than 0 把所有操作都記錄在慢日志進(jìn)行相關(guān)測試。我們可以使用 slowlog get [n] 查詢慢操作日志,使用 slowlog reset 清空慢查詢?nèi)罩尽W詈蠼o大家一個(gè)建議,可以定期檢查慢查詢?nèi)罩?#xff0c;及時(shí)發(fā)現(xiàn)和改進(jìn) Redis 運(yùn)行中不合理的操作。

    更多內(nèi)容,詳見視頻部分

    【END】

    近期熱文

    ?
    • 面試突擊 003 | Redis 如何實(shí)現(xiàn)查詢附近的人?視頻實(shí)戰(zhàn)版

    • 面試突擊 002 | Redis 是如何處理已過期元素的?附視頻

    • 面試突擊 001 | Redis 如何從海量數(shù)據(jù)中查詢出某一個(gè) Key?視頻版

    • Java面試詳解(2020版):500+ 面試題和核心知識點(diǎn)詳解

    • 面試珍藏:最常見的200多道Java面試題(2019年最新版)

    關(guān)注下方二維碼,訂閱更多精彩內(nèi)容

    朕已閱?

    總結(jié)

    以上是生活随笔為你收集整理的面试突击 004 | 如何排查 Redis 中的慢查询?视频实战篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。