【入門編】 KEYSコマンド – Redis

やあ。Redisの世界へようこそ。
システム開発の現場において、Redisは「魔法の箱」のように扱われることが多いけれど、その中身を正しく理解しているエンジニアは意外と少ない。

今日は、Redisを扱う上で誰もが一度は誘惑に駆られる、そして「絶対にやってはいけない禁断のコマンド」について話をしよう。

「KEYSコマンド」。これを知ることは、Redisというモンスターを飼いならすための第一歩だ。さあ、深掘りしていこうか。

—

1. KEYSコマンドとは何か?(日常の例え)

想像してみてほしい。君は巨大な図書館の司書だ。本(データ)は数百万冊ある。
ある日、君は「『Redis』という単語が含まれる本を全部探してきて!」と頼まれたとする。

もし、図書館の目録(インデックス)が整理されていれば、すぐに場所がわかるよね? でも、もし目録が全くなくて、「すべての本棚を一冊ずつ、端から端まで全部開いて確認する」しかなかったらどうなる?

……そう、図書館は数時間、あるいは数日間、完全に麻痺してしまうだろう。

KEYSコマンドとは、まさにこれだ。
Redisという高速なメモリ空間にある「すべてのキー」を、文字通り一つひとつ舐めるようにチェックして、指定した条件に合うものを探す。これがKEYSコマンドの正体なんだ。

2. なぜ本番環境で使ってはいけないのか?

Redisの最大の特徴は「シングルスレッド」であること。つまり、一度に一つの仕事しかできないという性質を持っている。

もし君が数百万件のデータが入っている本番環境で `KEYS ` を叩いたらどうなるか。
Redisは、その検索が終わるまで、他のすべてのリクエスト(Webサイトからのアクセスやデータの書き込みなど)を完全に無視して待ちぼうけさせることになる。

  • 結果: サービスが一時的にフリーズし、ユーザーは「重い!」と離脱していく。
  • 結論: プロダクション環境(本番)でのKEYSは、エンジニアにとっての「自爆スイッチ」だと思っていい。

3. どうやってキーを探せばいいのか?(代替案:SCAN)

「じゃあ、キーを確認したい時はどうすればいいんだよ!」という声が聞こえてきそうだね。安心してほしい。賢いエンジニアは `SCAN` というコマンドを使う。

`SCAN` は、一度に少しずつ、図書館の本を「チラ見」していくようなものだ。
「今日はここまで調べたから、続きはまた明日」というふうに、処理を細切れに行うことで、Redisを止めずに目的のキーを探し出すことができるんだ。

KEYS (絶対にやってはいけない禁断のコマンド)
実行するとRedisが数秒〜数分間完全に停止するリスクがある

SCAN 0 (こちらが推奨される安全な方法)
「カーソル」という目印を使って、少しずつ検索を進める
SCAN 0 MATCH “user:” COUNT 10

実行結果例:
1) “15” <- 次にここから検索を再開するためのカーソル 2) 1) "user:101" <- 見つかったキー 2) "user:102" この `SCAN` は、本番環境でもRedisを止めずに検索ができる、プロの作法だ。

4. 先輩からのアドバイス

Redisを扱う上で最も大切なことは、「魔法のような高速性能は、無限のリソースではない」と自覚することだ。

もし君が「今、どんなキーがあるか確認したいな」と思ったら、まずはこう自問してほしい。
「今、このサーバーは忙しいか? 本当にKEYSが必要か? SCANで代用できないか?」

この思考プロセスが身につけば、君はもうただの初心者じゃない。「システムを落とさない、信頼されるエンジニア」への道を一歩進んだことになる。

—

まとめ

  • KEYSコマンド: 全データを総なめにするため、本番環境では死刑宣告に近い。絶対に使わない。
  • SCANコマンド: 安全に、少しずつ検索するプロのツール。こちらを使いこなそう。

Redisは非常に奥が深くて面白い。この「危ない境界線」を知っておくことが、一流のエンジニアへの近道だよ。

もし分からないことがあればいつでも聞いてくれ。次は「なぜRedisはそんなに速いのか?」という核心に迫る話をしようか。今日はここまで。頑張れよ!

コメント

タイトルとURLをコピーしました