IBM Cloud Docs
Redis 8つの特徴

Redis 8つの特徴

Redis 8.2 Redis 7.x 8.2 は、使い慣れた Redis プログラミング・モデルを維持しながら、ストリーム、ビットマップ、ベクトル検索、クラスタ・メトリクスの新機能を提供する。

8.2 の主な改良点は以下の通り:

  • 一般的なコマンドやワークロードでパフォーマンスが大幅に向上。
  • 特にJSONとキーメタデータのメモリ使用量を削減。
  • ストリーム、ビット演算、ベクトル検索に新機能。
  • クラスタとレプリケーションのための拡張されたメトリクスと観測可能性。

Redis 7.2 から Redis へのアップグレード 8.2

Redis 7.2 から Redis 8.2 へのアップグレード方法については、 新しいメジャーバージョンへのアップグレードを ご覧ください。

Redis モジュール

Redis 8は、高度なユースケースのために機能を拡張するいくつかの公式モジュールをサポートしています。 主なモジュールとその機能については、以下のセクションで説明する。

RedisBloom

RedisBloom は Redis の公式モジュールで、確率的データ構造を提供する:ブルーム・フィルター、カッコー・フィルター、カウント・ミン・スケッチ、Top-K。 これらの構造は、厳密さと引き換えに、極めて高い空間効率とスピードを実現しており、既知のエラー境界を持つ近似解答が許容される場合に理想的である。

RedisBloom の主な機能は以下の通り:

  • ブルーム・フィルター:ある要素が集合に含まれるかどうかをテストする。偽陽性の確率は設定可能で、偽陰性の確率は設定できない。

  • カッコー・フィルター:ブルームと似ているが、より自然に削除をサポートする。

  • Count-Min Sketch:イベントの頻度をストリーミング方式で推定する(例えば、あるキーが何回現れるか)。

  • Top-K:データストリームで最も頻度の高い項目を追跡する。

RedisBloom の典型的な使用例は以下の通り:

  • 重複チェックと既出チェック(URL、Eメール、ユーザーID)。

  • 不正検知と不正使用防止(全履歴を保存することなく、疑わしいパターンにフラグを立てる)。

  • Count-Min SketchとTop-Kを使用したレコメンデーションシステムとトレンドリスト。

  • プリフィルタをキャッシュすることで、不要なバックエンド・ルックアップを回避。

RedisBloom 例

エラー率1%、容量1000のブルーム・フィルターを作成する:

> BF.RESERVE bikes:models 0.01 1000

OK

モデル名の追加と確認

> BF.ADD bikes:models "Smoky Mountain Striker"

(integer) 1

> BF.EXISTS bikes:models "Smoky Mountain Striker"

(integer) 1

詳しくは、 RedisBloom フィルタのドキュメントを ご覧ください

RediSearch

RediSearch は、 Redis のためのクエリおよびインデックス作成エンジンで、全文検索、二次インデックス作成、集約、ベクトル類似検索のサポートを提供する。 RediSearch は、 Redis データ(ハッシュや JSON など)をインデックス化し、スコアリング、フィルタリング、ハイライトによる強力なクエリーを可能にします。

RediSearch の主な機能は以下の通り:

  • ステミング、音声学、ファジーマッチングによる全文検索。

  • 高度なフィルター用の数値フィールド、タグフィールド、地理空間フィールド。

  • ファセット、分析、ランキングのための集計エンジン。

  • 意味的検索と近似最近傍(ANN)検索のためのベクトル場との統合。

RediSearch の典型的な使用例は以下の通り:

  • フィルタとファセットによる製品カタログ検索

  • フリーテキストおよび構造化フィルタによるログおよびイベント検索。

  • ユーザーコンテンツ(ツイート、投稿、文書)のリアルタイム検索。

  • テキスト検索とベクトル検索を組み合わせたAI搭載アプリケーション。

RediSearch 例

インデックスを作成し、文書を1つ追加する:

> FT.CREATE idx ON HASH PREFIX 1 "doc:" SCHEMA title TEXT

OK

> HSET doc:1 title "hello redis"

(integer) 1

テキストで検索する:

> FT.SEARCH idx "hello"

1) (integer) 1

2) "doc:1"

3) 1) "title"

   2) "hello redis"

詳しくは、 RediSearch のドキュメントを 参照。

RedisJSON

RedisJSON Redis JSONPath ライクな構文を使用する JSON ドキュメントの保存、検索、部分更新を可能にします。 RedisJSON は、サブドキュメントへの高速アクセスのために最適化され、 RediSearch などの他の Redis 機能と統合されています。

RedisJSON の主な機能は以下の通り:

  • 構造化 JSON ドキュメントをファーストクラスの値として格納します。

  • 文書全体を読み込むことなく、特定のパスを取得または更新します。

  • 配列、オブジェクト、入れ子構造をサポート。

  • JSONフィールドをインデックス化するための検索およびクエリー機能と統合するオプション。

RedisJSON の典型的な使用例は以下の通り:

  • 頻繁に更新されるネストされたフィールドを持つユーザープロファイルとセッション。

  • 設定ドキュメントと機能フラグ。

  • サービス間で共有される製品カタログやコンテンツオブジェクト。

  • JSONベースのAPIでは、 Redis が高速なバッキングストアとして機能する。

RedisJSON の例だ:

単純なJSONドキュメントを保存する:

127.0.0.1:6379> JSON.SET user:1 $ '{"name":"Alice","age":30}'

OK

1つのフィールドを取得する:

127.0.0.1:6379> JSON.GET user:1 $.name

"\"Alice\""

詳しくは、 RedisJSON のドキュメントを 参照。

RedisTimeSeries

RedisTimeSeries は、時系列データの取り込み、保存、クエリ、集約、ダウンサンプリングを効率的に行うためのモジュールである。 RedisTimeSeries は、時系列データ型と関連コマンドを追加し、メトリクスとイベントを時系列でモデル化します。

RedisTimeSeries の主な機能は以下の通り:

  • 自動タイムスタンプによる高スループットなインジェスト。

  • avg、min、max、sumのような集約を使用した、時間間隔のレンジクエリ。

  • 長期保存のための保持ポリシーと圧縮ルール。

  • 時系列の集合をグループ化し、照会するためのラベル。

RedisTimeSeries の典型的な使用例は以下の通り:

  • インフラとアプリケーションのメトリクス(CPU、メモリ、レイテンシ)。

  • IoT センサーの測定値とテレメトリー。

  • 財務指標データと市場指標。

  • ビジネスKPIと業務ダッシュボード。

RedisTimeSeries 例

時系列を作成し、値を追加する:

> TS.CREATE temp:room1

OK

> TS.ADD temp:room1 * 25.3

(integer) 1736846400000

最新のサンプルを入手するには

> TS.GET temp:room1

1) (integer) 1736846400000

2) "25.3"

詳しくは、 RedisTimeSeries のドキュメントを 参照。

Redis ベクトル

Redis Vectorはベクトルデータ型とベクトルの類似検索機能を提供し、埋め込みに対する近似最近傍(ANN)クエリをサポートする。 これにより、セマンティック検索やレコメンデーションなどのAIやMLのワークロードを Redis。

Redis ベクターの主な機能は以下の通り:

  • HNSWやflatのような設定可能なインデックス・タイプを持つ高次元ベクトル(例えば128-1536次元)の保存。

  • 余弦、内積、 L2 のような距離メトリックスを用いたベクトル場のK-最近傍(KNN)探索。

  • ベクトル類似度と構造化フィールドのフィルタ条件を組み合わせたハイブリッドクエリ。

  • RediSearch またはQuery Engineとの統合により、柔軟なスキーマを実現。

Redis Vectorの典型的な使用例は以下の通り:

  • RAGパイプラインのための意味論的文書検索。

  • ユーザーまたはアイテムの埋め込みを使用してパーソナライズされたレコメンデーション。

  • 画像、音声、コードの埋め込みに対する類似検索。

  • 学習済み埋め込みを使用した不正および異常検出。

Redis ベクトルの例:

最小限のベクトルインデックスと1つのドキュメントを作成する(4次元の例):

> FT.CREATE vIdx ON HASH PREFIX 1 "vdoc:" \

SCHEMA embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 4 DISTANCE_METRIC COSINE

OK

> HSET vdoc:1 embedding "\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?"

(integer) 1

KNNは最も近いベクトルを検索する:

> FT.SEARCH vIdx "(*=>[KNN 1 @embedding $v AS score])" \

PARAMS 2 v "\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?" SORTBY score DIALECT 2

1) (integer) 1

2) "vdoc:1"

3) 1) "embedding"

   2) "\x00\x00\x80?..."

   3) "score"

   4) "0.000000"

詳しくは、 Vector search concepts documentationを 参照のこと。

Redis 7 から Redis 8 へのリリースノートと変更履歴

Redis 7と Redis 8の機能的な違いは以下の通り:

  • StreamsコマンドXDELEXとXACKDELが強化され、アトミックメッセージライフサイクルとよりクリーンなコンシューマーグループ管理が可能になりました。

  • 大規模なビットセットを分析するために、より豊富なBITOP演算子を使用する拡張ビットマップ演算。

  • クエリーエンジンに統合された、より成熟したベクトル検索機能。

  • 以前のリリース( 7.x )にはない、複数のセキュリティおよび安定性のための修正。

  • モジュールの配布とパッケージングは、 8.x に統合されているため、展開が簡素化されている。