(Redis基礎教程之十二) 如何解決Redis中的故障
介紹
是一個開源的記憶體中鍵值資料儲存。它帶有幾個命令,可以幫助您進行故障排除和除錯。由於Redis具有的性質,因此其中許多命令都集中在記憶體管理上,但是還有一些其他命令對於概述Redis伺服器的狀態很有用。本教程將提供有關如何使用其中一些命令來幫助診斷和解決使用Redis時可能遇到的問題的詳細資訊。
如何使用本指南
本指南以備有完整示例的備忘單形式編寫。我們鼓勵您跳至與您要完成的任務相關的任何部分。
本指南中顯示的命令已在執行Redis版本4.0.9的Ubuntu 18.04伺服器上進行了測試。要設定類似的環境,您可以按照我們的指南步驟1進行操作。我們將透過使用Redis命令列介面執行它們來演示這些命令的行為。請注意,如果您使用其他Redis介面(例如,則某些命令的確切輸出可能會有所不同。
另外,您可以提供一個託管的Redis資料庫例項來測試這些命令,但是請注意,根據資料庫提供者所允許的控制級別,本指南中的某些命令可能無法按所述方式工作。要配置DigitalOcean託管資料庫,請遵循我們的。然後,您必須 或 才能透過TLS連線到託管資料庫。
對記憶體相關問題進行故障排除
memory usage
告訴您單個鍵當前正在使用多少記憶體。它以鍵的名稱作為引數,並輸出其使用的位元組數:
memory usage key_meaningOfLife
(integer) 42
為了更全面地瞭解您的Redis伺服器如何使用記憶體,可以執行以下memory stats
命令:
memory stats
此命令輸出與記憶體相關的指標及其值的陣列。以下是報告的指標memory stats
:
-
peak.allocated
:Redis消耗的最大位元組數 -
total.allocated
:Redis分配的總位元組數 -
startup.allocated
:Redis在啟動時消耗的初始位元組數 -
replication.backlog
:複製積壓的大小,以位元組為單位 -
clients.slaves
:所有副本_開銷_的總大小(輸出和查詢緩衝區以及連線上下文) -
clients.normal
:所有客戶端開銷的總大小 -
aof.buffer
:當前和重寫緩衝區的總大小 -
db.0
:伺服器上正在使用的每個資料庫的主要和到期字典的開銷,以位元組為單位報告 -
overhead.total
:用於管理Redis金鑰空間的所有開銷的總和 -
keys.count
:伺服器上所有資料庫中儲存的金鑰總數 -
keys.bytes-per-key
:伺服器的淨記憶體使用率與keys.count
-
dataset.bytes
:資料集的大小,以位元組為單位 -
dataset.percentage
:Redis佔用的Redis淨記憶體使用量的百分比dataset.bytes
-
peak.percentage
:peak.allocated
取出的百分比total.allocated
-
fragmentation
:當前正在使用的記憶體量除以Redis實際使用的實體記憶體之比
memory malloc-stats
提供了來自的內部統計報告,該報告是Linux系統上Redis使用的記憶體分配器:
memory malloc-stats
如果您似乎遇到了與記憶體有關的問題,但是解析前面命令的輸出證明是無濟於事的,則可以嘗試執行memory doctor
:
memory doctor
此功能將輸出它可以找到的所有記憶體消耗問題,並提出潛在的解決方案。
獲取有關Redis例項的常規資訊
與記憶體管理沒有直接關係的除錯命令是monitor
。此命令使您可以檢視Redis伺服器處理的每個命令的恆定流:
monitor
OK
1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared"
1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"
另一個對除錯有用的命令是info
,它返回有關伺服器的多個資訊和統計資訊塊:
info
# Server
redis_version:4.0.9
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:9435c3c2879311f3
redis_mode:standalone
os:Linux 4.15.0-52-generic x86_64
. . .
此命令返回很多資訊。如果您只想檢視一個資訊塊,則可以將其指定為info
:
info CPU
# CPU
used_cpu_sys:173.16
used_cpu_user:70.89
used_cpu_sys_children:0.01
used_cpu_user_children:0.04
請注意,該info
命令返回的資訊將取決於您所使用的Redis版本。
使用keys
命令
keys
如果您忘記了某個鍵的名稱,或者您已經建立了一個鍵,但又意外誤拼了它的名稱,則該命令很有用。keys
查詢與模式匹配的鍵:
keys pattern
支援以下glob樣式的變數
-
?
是萬用字元站在任何單個字元,這樣s?mmy
的比賽sammy
,sommy
和sqmmy
-
*
是一個萬用字元,用來代表任何數量的字元,包括沒有任何字元,所以sa*y
比賽sammy
,say
,sammmmmmy
,和salmony
- 您可以透過將模式將其括在方括號中來指定模式可以包含的兩個或多個字元,以
s[ai]mmy
匹配sammy
和simmy
,但不能匹配summy
- 要設定一個忽略一個或多個字母的萬用字元,請將其括在方括號中,並在其前面加上一個胡蘿蔔(
^
),這樣s[^oi]mmy
可以匹配sammy
和sxmmy
,但不能匹配sommy
或simmy
- 要設定一個萬用字元,其中包括一系列的字母,範圍的開頭和結尾分開連字元和括號包起來,這樣
s[a-o]mmy
將匹配sammy
,skmmy
和sommy
,但不srmmy
**警告:**本警告說,keys
應該幾乎從來沒有在生產環境中使用,因為它可能會對效能產生重大的負面影響。
結論
本指南詳細介紹了許多命令,這些命令可用於故障排除和解決與Redis一起使用時可能遇到的問題。如果您想在本指南中概述其他相關的命令,引數或過程,請在下面的評論中提出疑問或提出建議。
有關Redis命令的更多資訊,請參閱關於系列教程。
-
作者:
出處:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3244/viewspace-2825490/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Redis基礎:redis特點Redis
- Redis基礎Redis
- Redis的基礎命令Redis
- 如何解決Redis中的key過期問題Redis
- redis基礎梳理Redis
- Redis-基礎Redis
- redis基礎篇Redis
- Redis基礎操作Redis
- Redis 基礎學習Redis
- Redis基礎知識Redis
- Redis入門基礎Redis
- redis 基礎語法Redis
- 《面試心經》---Redis基礎面試Redis
- kafka及redis基礎KafkaRedis
- Redis基礎(三)Redis持久化:RDB與AOFRedis持久化
- redis哨兵架構基礎Redis架構
- redis學習——基礎指令Redis
- Redis 基礎特性講解Redis
- 【Redis】Redis Cluster-叢集故障轉移Redis
- Docker教程之八搭建RedisDockerRedis
- Redis基礎知識詳解Redis
- 【資料庫】Redis基礎篇資料庫Redis
- redis基礎系列二:淘汰策略Redis
- Redis基礎資料結構Redis資料結構
- Redis基礎(二)資料庫Redis資料庫
- Redis基礎學習筆記Redis筆記
- Redis基礎—瞭解Redis是如何做資料持久化的Redis持久化
- redis的sentinel模式故障演練Redis模式
- Redis基礎知識(學習筆記5--Redis Cluster)Redis筆記
- Redis基礎知識(學習筆記19--Redis Sentinel)Redis筆記
- 【Redis學習⑴】Redis入門安裝及基礎資料的知識Redis
- Redis基礎——剖析基礎資料結構及其用法Redis資料結構
- (Python基礎教程之十二)Python讀寫CSV檔案Python
- 初探Redis-基礎型別HashRedis型別
- 初探Redis-基礎型別ListRedis型別
- Redis日常運維-基礎認識Redis運維
- Redis 基礎知識點總結Redis
- Redis基礎篇(七)哨兵機制Redis