0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Redisログの見方まとめ

0
Posted at

Redisログの見方チートシート

対象読者

  • AWS ElastiCache などで Redis を採用しており、CloudWatch Logs や スロークエリログを眺める機会がある人
  • EVAL … とか RPUSH … とか出てくるけど何を意味しているの?」という疑問をさくっと解決したい人

1. Redis ログの基本構造

ElastiCache のスロークエリログ例(CloudWatch Logs):

{"CacheClusterId":"example-0001-001","Id":3609,"Timestamp":1754359800,"Duration (us)":39359,
 "Command":"GET … (1 more arguments)","ClientAddress":"10.0.7.31:46632"}
フィールド 説明
Command GET … 実行されたコマンド(引数は省略表示されることがある)
Duration (us) 39359 かかった時間(マイクロ秒)。1000µs = 1ms
ClientAddress 10.0.7.31:46632 リクエスト元(IP:port)
Timestamp 1754359800 実行時刻(Unix エポック)

このうち、コマンドが何を意味しているかを知っておくと、
「どの処理がボトルネックか」を素早く特定できます。


2. よく出るコマンド早見表

コマンド 概要 代表的な用途 一言ポイント
RPUSH リストの末尾に要素を追加 キューイング, ログ保存 連続大量 RPUSH はリスト肥大化に注意
SETEX 値をセットし TTL を付与 キャッシュ保存 TTL=0 だと即削除されるので注意
GET キーの値を取得 キャッシュ参照 MISS が多いと DB 直撃の予兆
ZRANGEBYSCORE Sorted Set をスコア範囲で取得 遅延ジョブの取得, スケジューラ スコア範囲が広いと重くなる
EVAL Lua スクリプトを実行 分散ロック, 複雑なアトミック処理 遅いと Redis 全体をブロック⚠️

Tips: Duration (us) が 10,000µs (=10ms) を超える EVALZRANGEBYSCORE が連発していたら要注意。


🔍 用語メモ(TTL / Sorted Set / Lua スクリプト)

用語 正式名称 & 意味 具体例 覚え方のコツ
TTL Time To Live — キーが自動削除されるまでの「生存期間(秒)」 SETEX mykey 60 "val" → 60秒後に mykey が消える 「キャッシュの賞味期限」的な数値
Sorted Set 順序付き集合(型名:ZSET
各要素にスコア(float) が付き、スコア順に並ぶ
ZRANGEBYSCORE jobs 0 1000 → スコア0〜1000のジョブ取得 「優先度付きの配列」くらいに考えると◎
Lua スクリプト  軽量スクリプト言語 Lua で書いたコードを
EVALRedis内で実行 できる機能
分散ロック取得:
EVAL "return redis.call('setnx', KEYS[1], ARGV[1])" 1 lock 1
「複数コマンドを1回のRPCでアトミックに」

💡 暗記ショートカット

  • TTL = 期限付き保存
  • Sorted Set = スコア付きリスト
  • Lua = Redis内ミニスクリプト

3. 実際のトラブルシュート例

  • EVAL が 40ms 以上 → Lua スクリプトの中身を見直し or アプリにロジックを移す
  • GET が <1ms でも MISS が多い → キャッシュキー設計を見直す
  • RPUSH が多すぎてメモリ逼迫 → リストの TTL 設定 or 古い要素を LTRIM

4. スローログとエンジンログの違い

ログ種類 取得方法 (ElastiCache) 主な内容 目的
スローログ Slow Log を有効化すると CloudWatch Logs に出力 しきい値 (ms) を超えた 遅いコマンド を逐次記録。Command / Duration / ClientAddress など パフォーマンス解析、ボトルネック可視化
エンジンログ Engine Log を有効化すると CloudWatch Logs に出力 Redis サーバーの スタートアップ・シャットダウン、レプリケーションイベント、クラスター再構成、メモリ警告など 稼働状況のモニタリング、障害解析

🔑 使い分けのコツ

  • レスポンスが遅い ⇒ まず スローログ でどのコマンドが時間を食っているか確認。
  • 接続切断やフェイルオーバーエンジンログ でノードの再起動やクラスタイベントを確認。

5. まとめ

  1. コマンド名を把握するだけでボトルネックの当たりが付けられる
  2. マイクロ秒単位の Duration を ms に換算しつつスロークエリを洗い出す
  3. EVALZRANGEBYSCORE は特に重くなりがちなので注意

ログを眺めるときは「コマンド × 実行時間 × 件数」のセットで見るとパフォーマンス改善の糸口がつかめます。


参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?