【入門編】 Stream型:基本操作 – Redis

こんにちは。Redisの世界へようこそ。
Redisといえば「速いキャッシュ」というイメージが強いかもしれませんが、実はそれだけではありません。今日お話しする「Stream(ストリーム)」というデータ構造は、まさにRedisの真骨頂とも言える、非常にパワフルで賢い仕組みです。

エンジニアとして多くのシステムを設計してきましたが、ログやイベントを「いかに効率よく、かつ確実に管理するか」という問いに対する一つの理想的な答えが、このStreamにあります。

難しい専門用語はなるべく使わずに、まずはこの仕組みを「カフェの注文伝票」に例えて紐解いていきましょう。

—

Streamは「終わりのないデジタル伝票」

カフェのカウンターを想像してみてください。次から次へと入ってくる注文。これを一つずつ紙に書いて、棚に並べていく様子をイメージしてください。

  • 誰が(ユーザーIDやデバイスID)
  • 何を(注文内容)
  • いつ(タイムスタンプ)

これを時系列順に、絶対に消えないように記録していく。これがRedisのStreamの正体です。

1. 注文を書き込む:`XADD`

まずは伝票を書き込みます。Redisは自動的に「今何時か」を識別するIDを付与してくれるので、私たちは中身を書くだけでOKです。

書式: XADD [ストリーム名] [ID] [フィールド] [値] …
IDに ” を指定すると、Redisが現在時刻を基に自動生成してくれます。
XADD coffee_orders user “Alice” menu “Latte”
結果: “1715000000000-0” のようなIDが返ってきます。これが伝票番号です。

“ を使うだけで、Redisが完璧に並び順を管理してくれる。これがどれほど楽なことか、後で必ず実感することになります。

2. 伝票の数を確認する:`XLEN`

「今、溜まっている注文はいくつかな?」と確認したいとき。これも一瞬です。

XLEN coffee_orders
結果: (integer) 1
カウンターの裏に何枚の伝票があるか、即座に教えてくれます。

3. 過去の注文を振り返る:`XRANGE` / `XREVRANGE`

ここがStreamの面白いところ。普通のリストとは違い、IDを指定して「特定の期間」をピンポイントで抜き出せます。

  • `XRANGE`: 古い順(時系列順)に伝票をめくる
  • `XREVRANGE`: 新しい順(逆順)に伝票をめくる

最初の伝票から最後までの全リストを表示
XRANGE coffee_orders – +

最新の注文を3件だけ確認したいとき(ログ調査の基本です)
XREVRANGE coffee_orders + – COUNT 3

`+` や `-` は、「一番古いところから一番新しいところまで」という記号です。これも直感的ですよね。

4. 間違った伝票を外す:`XDEL`

「あ、今の注文はキャンセルで!」となった場合。StreamではIDを指定して削除します。

XDEL coffee_orders 1715000000000-0
この番号の伝票だけが、棚から取り除かれます。

—

なぜ、わざわざStreamを使うのか?

「普通のリストやデータベースじゃダメなの?」と疑問に思うかもしれません。しかし、大規模なシステムにおいて、RedisのStreamには決定的な強みがあります。

1. 書き込みと読み込みが超高速:メモリ上で動くため、どんなに大量のログが流れてきても、システムが重くなることがありません。
2. 時系列の管理が完璧:自分で時刻を管理する必要がなく、RedisがIDに時間を埋め込んでくれるため、データの順序が狂う心配がありません。
3. 後から読み返すことができる:メッセージキューのように「一度読んだら消える」のではなく、必要なら何度でも同じ範囲を読み直すことができます。

—

さあ、次はあなたの番です

ここまで理解できれば、RedisのStreamの基礎は完全にあなたのものです。

まずは手元のRedis環境で `XADD` を数回叩いてみて、`XRANGE` で中身を覗いてみてください。画面にデータが並んだ瞬間、「あ、これがログ管理の第一歩なんだ」と手応えを感じるはずです。

エンジニアリングの本質は「複雑なことをいかにシンプルに扱うか」にあります。RedisのStreamは、まさにそのための強力な武器です。ぜひ、あなたのプロジェクトでも試してみてくださいね。

また何か詰まったら、いつでも聞きに来てください。応援していますよ!

コメント

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