はじめに
Redisは、オープンソースのインメモリキーバリューデータストアです。トラブルシューティングやデバッグに役立ついくつかのコマンドが付属しています。Redisはインメモリキーバリューストアとしての性質を持つため、これらのコマンドの多くはメモリ管理に焦点を当てていますが、Redisサーバーの状態を概観するために役立つ他のコマンドもあります。このチュートリアルでは、Redisの使用中に発生する可能性のある問題の診断と解決に役立ついくつかのコマンドの使用方法について詳しく説明します。
このガイドの使用方法
このガイドは、自己完結型の例を含んだチートシートとして記述されています。完了するタスクに関連するセクションに直接移動することをお勧めします。
このガイドで示されているコマンドは、Redisバージョン6.0.16を実行しているUbuntu 22.04サーバーでテストされました。同様の環境をセットアップするには、Ubuntu 22.04でRedisをインストールしてセキュアにする方法のステップ1に従うことができます。これらのコマンドの動作を確認するために、Redisコマンドラインインターフェースであるredis-cli
で実行しています。異なるRedisインターフェース(例: Redli)を使用している場合、特定のコマンドの出力は異なる場合があります。
代わりに、これらのコマンドをテストするために管理されたRedisデータベースインスタンスをプロビジョニングすることもできますが、データベースプロバイダが許可する制御レベルによっては、このガイドの一部のコマンドは説明通りに動作しない可能性があります。DigitalOceanの管理されたデータベースをプロビジョニングするには、Managed Databases製品のドキュメントに従ってください。次に、Redliをインストールするか、TLSトンネルを設定してTLS経由で管理されたデータベースに接続する必要があります。
メモリ関連の問題のトラブルシューティング
memory usage
は、現在のメモリ使用量を単一のキーごとに表示します。キーの名前を引数として受け取り、使用されているバイト数を出力します。まず、例として変数を設定します:
- set key_meaningOfLife "Food"
次に、memory usage
でメモリを確認します:
- memory usage key_meaningOfLife
Output(integer) 88
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のネットメモリ使用量のうちdataset.bytes
が占める割合peak.percentage
:peak.allocated
がtotal.allocated
から占める割合フラグメンテーション
:Redisが実際に使用している物理メモリに対する現在使用中のメモリ量の比率
memory malloc-stats
は、Linuxシステム上のRedisで使用されるメモリアロケータであるjemallocからの内部統計レポートを提供します。
- memory malloc-stats
前のコマンドの出力を解析しても役に立たない場合、memory doctor
を実行してみることもできます。
- memory doctor
この機能は、見つかったメモリ消費の問題を出力し、潜在的な解決策を提案します。
Redisインスタンスに関する一般情報の取得
A debugging command that isn’t directly related to memory management is monitor
. This command allows you to review a constant stream of every command processed by the Redis server:
- monitor
OutputOK
1566157213.896437 [0 127.0.0.1:47740] "auth" "foobared"
1566157215.870306 [0 127.0.0.1:47740] "set" "key_1" "878"
デバッグに便利な別のコマンドは、info
です。このコマンドは、サーバーに関する複数の情報と統計情報を返します。
- info
Output# Server
redis_version:6.0.16
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:a3fdef44459b3ad6
redis_mode:standalone
os:Linux 5.15.0-41-generic x86_64
. . .
このコマンドは多くの情報を返します。1つの情報ブロックのみを返す場合は、info
の引数として指定することができます。
- info CPU
Output# 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
以下のグロブスタイルの変数がサポートされています:
?
は、任意の1文字を表すワイルドカードです。つまり、s?mmy
はsammy
、sommy
、sqmmy
に一致します。*
は、任意の文字(0文字も含む)を表すワイルドカードです。つまり、sa*y
はsammy
、say
、sammmmmmy
、salmony
に一致します。- パターンに含めることができる2文字以上の文字を、角括弧で囲んで指定することができます。したがって、
s[ai]mmy
はsammy
とsimmy
に一致しますが、summy
には一致しません。 - 1文字以上の文字を無視するワイルドカードを設定するには、角括弧で囲んでその前にキャレット(
^
)を付けます。したがって、s[^oi]mmy
はsammy
とsxmmy
に一致しますが、sommy
やsimmy
には一致しません。 - 文字の範囲を含むワイルドカードを設定するには、ハイフンで範囲の始まりと終わりを区切り、角括弧で囲みます。したがって、
s[a-o]mmy
はsammy
、skmmy
、sommy
に一致しますが、srmmy
には一致しません。
注意: Redisのドキュメントによると、keys
はパフォーマンスに大きな影響を与える可能性があるため、ほとんどの場合、本番環境では使用しないでください。
結論
このガイドでは、Redisを使用して作業する際に遭遇する問題をトラブルシューティングし解決するためのいくつかのコマンドについて詳しく説明しています。このガイドで学びたい他の関連するコマンド、引数、手順がある場合は、コメントで質問したり提案したりしてください。
Redisのコマンドに関する詳細な情報については、Redisデータベースの管理方法に関するチュートリアルシリーズをご覧ください。
Source:
https://www.digitalocean.com/community/cheatsheets/how-to-troubleshoot-issues-in-redis