詳解Redis的慢查詢?nèi)罩?/h1>
更新時(shí)間:2020年08月30日 14:59:34 作者:趙強(qiáng)老師
這篇文章主要介紹了Redis的慢查詢?nèi)罩镜南嚓P(guān)資料,幫助大家更好的理解和學(xué)習(xí)Redis數(shù)據(jù)庫(kù),感興趣的朋友可以了解下
Redis慢查詢?nèi)罩編椭_(kāi)發(fā)和運(yùn)維人員定位系統(tǒng)存在的慢操作。慢查詢?nèi)罩揪褪窍到y(tǒng)在命令執(zhí)行前后計(jì)算每條命令的執(zhí)行時(shí)間,當(dāng)超過(guò)預(yù)設(shè)閥值,就將這條命令的相關(guān)信息(慢查詢ID,發(fā)生時(shí)間戳,耗時(shí),命令的詳細(xì)信息)記錄下來(lái)。
Redis客戶端一條命令分為如下四部分執(zhí)行:

需要注意的是,慢查詢?nèi)罩局皇墙y(tǒng)計(jì)步驟3)執(zhí)行命令的時(shí)間,所以慢查詢并不代表客戶端沒(méi)有超時(shí)問(wèn)題。需要注意的是,慢查詢?nèi)罩局皇墙y(tǒng)計(jì)步驟3)執(zhí)行命令的時(shí)間,所以慢查詢并不代表客戶端沒(méi)有超時(shí)問(wèn)題。
一、慢查詢的配置參數(shù):
- 慢查詢的預(yù)設(shè)閥值 slowlog-log-slower-than
slowlog-log-slower-than參數(shù)就是預(yù)設(shè)閥值,單位是微秒,默認(rèn)值是10000,如果一條命令的執(zhí)行時(shí)間超過(guò)10000微妙,那么它將被記錄在慢查詢?nèi)罩局小?br />
如果slowlog-log-slower-than的值是0,則會(huì)記錄所有命令。
如果slowlog-log-slower-than的值小于0,則任何命令都不會(huì)記錄日志。
- 慢查詢?nèi)罩镜拈L(zhǎng)度slowlog-max-len
slowlog-max-len只是說(shuō)明了慢查詢?nèi)罩咀疃啻鎯?chǔ)多少條。Redis使用一個(gè)列表來(lái)存儲(chǔ)慢查詢?nèi)罩?,showlog-max-len就是列表的最大長(zhǎng)度。當(dāng)慢查詢?nèi)罩疽呀?jīng)到達(dá)列表的最大長(zhǎng)度時(shí),又有慢查詢?nèi)罩疽M(jìn)入列表,則最早插入列表的日志將會(huì)被移出列表,新日志被插入列表的末尾。
二、慢查詢?nèi)罩镜慕M成
慢查詢?nèi)罩居梢韵滤膫€(gè)屬性組成:
標(biāo)識(shí)ID,發(fā)生時(shí)間戳,命令耗時(shí),執(zhí)行命令和參數(shù)
三、慢查詢?nèi)罩镜脑L問(wèn)和管理
獲取慢查詢?nèi)罩緎lowlog get [n]
命令:slowlog get [N]
選型:N,可選,代表獲取的日志條數(shù)
例如:showlog get 5
四、慢查詢?nèi)罩咀罴褜?shí)踐
- slowlog-max-len的設(shè)置建議
線上環(huán)境建議調(diào)大慢查詢?nèi)罩镜牧斜?,記錄慢查詢?nèi)罩緯r(shí)Redis會(huì)對(duì)長(zhǎng)命令做截?cái)嗖僮?,并不?huì)占用大量?jī)?nèi)存。增大慢查詢列表可以減緩慢查詢被剔除出列表的可能性。例如線上可以設(shè)置為1000以上。
- slowlog-log-lower-than的設(shè)置建議
需要根據(jù)redis的并發(fā)量調(diào)整該值。由于redis采用單線程響應(yīng)名利,對(duì)于高流量的場(chǎng)景,如果執(zhí)行命令的時(shí)間在1毫秒以上,那么redis最多可支撐OPS(每秒操作次數(shù))不到1000,因此高OPS場(chǎng)景的REDIS建議設(shè)置為1毫秒。
- 慢查詢只記錄命令執(zhí)行時(shí)間,并不包括命令排隊(duì)時(shí)間和網(wǎng)絡(luò)傳輸時(shí)間。
因此客戶端命令的執(zhí)行時(shí)間要大于redis服務(wù)器實(shí)際執(zhí)行命令的時(shí)間。因?yàn)槊顖?zhí)行排隊(duì)極致,慢查詢會(huì)導(dǎo)致命令級(jí)聯(lián)阻塞,因此當(dāng)客戶端出現(xiàn)請(qǐng)求超時(shí),需要檢查該時(shí)間點(diǎn)是否有對(duì)應(yīng)的慢查詢,從而分析是否因?yàn)槁樵儗?dǎo)致的命令級(jí)聯(lián)阻塞
- 慢查詢?nèi)罩臼且粋€(gè)先進(jìn)先出隊(duì)列
慢查詢較多的情況下,可能會(huì)丟失部分慢查詢命令,可以定期執(zhí)行slow get命令將慢查詢?nèi)罩境志没狡渌鎯?chǔ)中。然后制作可視化界面查詢。
以上就是詳解Redis的慢查詢?nèi)罩镜脑敿?xì)內(nèi)容,更多關(guān)于Redis 慢查詢?nèi)罩镜馁Y料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
-
分布式Redis?Cluster集群搭建與Redis基本用法
這篇文章介紹了分布式Redis?Cluster集群搭建與Redis基本用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2022-02-02
-
Win10下通過(guò)Ubuntu安裝Redis的過(guò)程
這篇文章主要介紹了Win10下通過(guò)Ubuntu安裝Redis,在安裝Ubuntu需要先打開(kāi)Windows功能,接著創(chuàng)建一個(gè)用戶及密碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下 2022-04-04
-
Redis list 類(lèi)型學(xué)習(xí)筆記與總結(jié)
這篇文章主要介紹了Redis list 類(lèi)型學(xué)習(xí)筆記與總結(jié),本文著重講解了關(guān)于List的一些常用方法,比如lpush 方法、lrange 方法、rpush 方法、linsert 方法、 lset 方法等,需要的朋友可以參考下 2015-06-06
-
如何使用注解方式實(shí)現(xiàn)?Redis?分布式鎖
這篇文章主要介紹了如何使用注解方式實(shí)現(xiàn)Redis分布式鎖,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,教大家如何優(yōu)雅的使用Redis分布式鎖,感興趣的小伙伴可以參考一下 2022-07-07
-
Redis SETEX命令實(shí)現(xiàn)鍵值對(duì)管理
本文主要介紹了Redis SETEX命令實(shí)現(xiàn)鍵值對(duì)管理,SETEX命令用于設(shè)置具有過(guò)期時(shí)間的鍵值對(duì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2024-06-06
-
redis中hiredis-API函數(shù)的調(diào)用方法
這篇文章主要介紹了redis中hiredis-API函數(shù)的調(diào)用,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧 2023-09-09
-
Redis實(shí)現(xiàn)庫(kù)存扣減的示例代碼
在日常開(kāi)發(fā)中有很多地方都有類(lèi)似扣減庫(kù)存的操作,本文主要介紹了Redis實(shí)現(xiàn)庫(kù)存扣減的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下 2023-07-07
-
Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例
探店筆記類(lèi)似點(diǎn)評(píng)網(wǎng)站的評(píng)價(jià),本文主要介紹了Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧 2023-01-01
最新評(píng)論
Redis慢查詢?nèi)罩編椭_(kāi)發(fā)和運(yùn)維人員定位系統(tǒng)存在的慢操作。慢查詢?nèi)罩揪褪窍到y(tǒng)在命令執(zhí)行前后計(jì)算每條命令的執(zhí)行時(shí)間,當(dāng)超過(guò)預(yù)設(shè)閥值,就將這條命令的相關(guān)信息(慢查詢ID,發(fā)生時(shí)間戳,耗時(shí),命令的詳細(xì)信息)記錄下來(lái)。
Redis客戶端一條命令分為如下四部分執(zhí)行:

需要注意的是,慢查詢?nèi)罩局皇墙y(tǒng)計(jì)步驟3)執(zhí)行命令的時(shí)間,所以慢查詢并不代表客戶端沒(méi)有超時(shí)問(wèn)題。需要注意的是,慢查詢?nèi)罩局皇墙y(tǒng)計(jì)步驟3)執(zhí)行命令的時(shí)間,所以慢查詢并不代表客戶端沒(méi)有超時(shí)問(wèn)題。
一、慢查詢的配置參數(shù):
- 慢查詢的預(yù)設(shè)閥值 slowlog-log-slower-than
slowlog-log-slower-than參數(shù)就是預(yù)設(shè)閥值,單位是微秒,默認(rèn)值是10000,如果一條命令的執(zhí)行時(shí)間超過(guò)10000微妙,那么它將被記錄在慢查詢?nèi)罩局小?br />
如果slowlog-log-slower-than的值是0,則會(huì)記錄所有命令。
如果slowlog-log-slower-than的值小于0,則任何命令都不會(huì)記錄日志。
- 慢查詢?nèi)罩镜拈L(zhǎng)度slowlog-max-len
slowlog-max-len只是說(shuō)明了慢查詢?nèi)罩咀疃啻鎯?chǔ)多少條。Redis使用一個(gè)列表來(lái)存儲(chǔ)慢查詢?nèi)罩?,showlog-max-len就是列表的最大長(zhǎng)度。當(dāng)慢查詢?nèi)罩疽呀?jīng)到達(dá)列表的最大長(zhǎng)度時(shí),又有慢查詢?nèi)罩疽M(jìn)入列表,則最早插入列表的日志將會(huì)被移出列表,新日志被插入列表的末尾。
二、慢查詢?nèi)罩镜慕M成
慢查詢?nèi)罩居梢韵滤膫€(gè)屬性組成:
標(biāo)識(shí)ID,發(fā)生時(shí)間戳,命令耗時(shí),執(zhí)行命令和參數(shù)
三、慢查詢?nèi)罩镜脑L問(wèn)和管理
獲取慢查詢?nèi)罩緎lowlog get [n]
命令:slowlog get [N]
選型:N,可選,代表獲取的日志條數(shù)
例如:showlog get 5
四、慢查詢?nèi)罩咀罴褜?shí)踐
- slowlog-max-len的設(shè)置建議
線上環(huán)境建議調(diào)大慢查詢?nèi)罩镜牧斜?,記錄慢查詢?nèi)罩緯r(shí)Redis會(huì)對(duì)長(zhǎng)命令做截?cái)嗖僮?,并不?huì)占用大量?jī)?nèi)存。增大慢查詢列表可以減緩慢查詢被剔除出列表的可能性。例如線上可以設(shè)置為1000以上。
- slowlog-log-lower-than的設(shè)置建議
需要根據(jù)redis的并發(fā)量調(diào)整該值。由于redis采用單線程響應(yīng)名利,對(duì)于高流量的場(chǎng)景,如果執(zhí)行命令的時(shí)間在1毫秒以上,那么redis最多可支撐OPS(每秒操作次數(shù))不到1000,因此高OPS場(chǎng)景的REDIS建議設(shè)置為1毫秒。
- 慢查詢只記錄命令執(zhí)行時(shí)間,并不包括命令排隊(duì)時(shí)間和網(wǎng)絡(luò)傳輸時(shí)間。
因此客戶端命令的執(zhí)行時(shí)間要大于redis服務(wù)器實(shí)際執(zhí)行命令的時(shí)間。因?yàn)槊顖?zhí)行排隊(duì)極致,慢查詢會(huì)導(dǎo)致命令級(jí)聯(lián)阻塞,因此當(dāng)客戶端出現(xiàn)請(qǐng)求超時(shí),需要檢查該時(shí)間點(diǎn)是否有對(duì)應(yīng)的慢查詢,從而分析是否因?yàn)槁樵儗?dǎo)致的命令級(jí)聯(lián)阻塞
- 慢查詢?nèi)罩臼且粋€(gè)先進(jìn)先出隊(duì)列
慢查詢較多的情況下,可能會(huì)丟失部分慢查詢命令,可以定期執(zhí)行slow get命令將慢查詢?nèi)罩境志没狡渌鎯?chǔ)中。然后制作可視化界面查詢。
以上就是詳解Redis的慢查詢?nèi)罩镜脑敿?xì)內(nèi)容,更多關(guān)于Redis 慢查詢?nèi)罩镜馁Y料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
分布式Redis?Cluster集群搭建與Redis基本用法
這篇文章介紹了分布式Redis?Cluster集群搭建與Redis基本用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02
Win10下通過(guò)Ubuntu安裝Redis的過(guò)程
這篇文章主要介紹了Win10下通過(guò)Ubuntu安裝Redis,在安裝Ubuntu需要先打開(kāi)Windows功能,接著創(chuàng)建一個(gè)用戶及密碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
Redis list 類(lèi)型學(xué)習(xí)筆記與總結(jié)
這篇文章主要介紹了Redis list 類(lèi)型學(xué)習(xí)筆記與總結(jié),本文著重講解了關(guān)于List的一些常用方法,比如lpush 方法、lrange 方法、rpush 方法、linsert 方法、 lset 方法等,需要的朋友可以參考下2015-06-06
如何使用注解方式實(shí)現(xiàn)?Redis?分布式鎖
這篇文章主要介紹了如何使用注解方式實(shí)現(xiàn)Redis分布式鎖,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,教大家如何優(yōu)雅的使用Redis分布式鎖,感興趣的小伙伴可以參考一下2022-07-07
Redis SETEX命令實(shí)現(xiàn)鍵值對(duì)管理
本文主要介紹了Redis SETEX命令實(shí)現(xiàn)鍵值對(duì)管理,SETEX命令用于設(shè)置具有過(guò)期時(shí)間的鍵值對(duì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06
redis中hiredis-API函數(shù)的調(diào)用方法
這篇文章主要介紹了redis中hiredis-API函數(shù)的調(diào)用,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-09-09
Redis實(shí)現(xiàn)庫(kù)存扣減的示例代碼
在日常開(kāi)發(fā)中有很多地方都有類(lèi)似扣減庫(kù)存的操作,本文主要介紹了Redis實(shí)現(xiàn)庫(kù)存扣減的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2023-07-07
Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例
探店筆記類(lèi)似點(diǎn)評(píng)網(wǎng)站的評(píng)價(jià),本文主要介紹了Redis筆記點(diǎn)贊排行榜的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01

