やあ。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はそんなに速いのか?」という核心に迫る話をしようか。今日はここまで。頑張れよ!
コメント