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

こんにちは。Redisの世界へようこそ。

現場で「Redisのトランザクション」について聞かれると、多くの人は「要するに`MULTI`と`EXEC`でしょ?」と答えます。でも、このコマンドの本当の価値を理解しているエンジニアは、意外と少ないものです。

今日は、Redisの`MULTI`という魔法の言葉について、技術的な堅苦しさは一旦置いて、日常のシーンに例えてお話ししますね。ここをクリアすれば、Redisのデータ操作における「作法」が、驚くほどクリアに見えてきますよ。

—

1. 「MULTI」は「注文のまとめ書き」

想像してみてください。あなたは今、大人気のカフェで注文をしようとしています。

もし、店員さんが「コーヒーください」と言うたびに、その都度レジに走って、カード決済をして、また次の注文を聞きに来る……なんてやり方をしたら、どうでしょう? とても非効率ですよね。

Redisの`MULTI`コマンドは、まさに「注文をまとめてから、最後に一気に決済する」ための宣言です。

1. `MULTI`と唱える: 「これからまとめて注文するよ!」と店員さんに伝える。
2. コマンドを並べる: 「コーヒー」「ケーキ」「サンドイッチ」と注文を言う。でも、まだ作ってくれない。
3. `EXEC`と唱える: 「はい、これで注文確定!」と言った瞬間に、店員さんが猛スピードで調理を始める。

これがRedisのトランザクションの正体です。

—

2. なぜ「まとめて」やる必要があるのか?

なぜわざわざそんな回りくどいことをするのか? それには、「横入り防止」という重要な理由があります。

もし`MULTI`を使わずに、一つずつコマンドを実行していたら、その合間に他の誰かが別の注文を入れてくるかもしれません。すると、商品の在庫が入れ替わったり、計算が狂ったりするリスクがありますよね。

`MULTI`から`EXEC`までの間、Redisは「この人の注文が終わるまでは、他の誰の命令も挟ませないぞ」という聖域(キュー)を作ってくれるのです。

—

3. 実践:コーヒーショップの注文を再現しよう

Redisでの操作は、こんな感じです。

1. 注文開始の宣言
MULTI
=> OK (店員さんが「承知しました!」と言った状態)

2. 注文をキューに入れる
SET user:1:coffee “Latte”
=> QUEUED (心の中で「とりあえずラテね」とメモした状態)

SET user:1:cake “Cheesecake”
=> QUEUED (「ケーキも追加」とメモした状態)

3. 実行(ここで初めて調理開始!)
EXEC
=> 1) OK
2) OK
(これで一気に処理が完了)

もし途中で気が変わって「やっぱりやーめた!」となったら?
その時は `DISCARD` と唱えるだけ。注文のメモ(キュー)がゴミ箱に捨てられ、何事もなかったことになります。とても安全ですよね。

—

4. 知っておくべき「たった一つの注意点」

ここまで読んで「完璧だ!」と思ったあなたに、一つだけ、伝説のエンジニアとしてのアドバイスを。

Redisの`MULTI`は、一般的なデータベースのトランザクションとは少し性格が違います。「途中で失敗しても、それまでの操作を自動で元に戻す(ロールバックする)機能」は、Redisのトランザクションにはありません。

「一度始めたら、最後まできっちりやりきる」のがRedisの流儀です。もしエラーが出るような危なっかしい操作をしたいなら、`MULTI`の前にちゃんと準備運動(データ確認)をしておくのが、一流のエンジニアの嗜みです。

—

まとめ:Redisを使いこなす第一歩

`MULTI`は、ただのコマンドではありません。「操作の整合性を守るためのバリア」です。

  • `MULTI`:注文を開始する。
  • `QUEUED`:注文をメモする。
  • `EXEC`:一気に実行して完結させる。

このリズムさえ掴んでしまえば、Redisはあなたの最高の相棒になります。

最初は難しく感じるかもしれませんが、まずはターミナルで `MULTI` と打ち込んでみてください。Redisが「準備万端だよ!」と返してくれるそのレスポンスに、エンジニアとしてのワクワクを感じられるはずです。

さあ、次はどんなデータ構造を操作してみますか? 焦らず、一歩ずつマスターしていきましょう。あなたのエンジニアライフを心から応援しています。

コメント

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