Redis入門

最終更新:

Redisとはなにか

Redisはオープンソースのインメモリデータベースです.キーバリューストアであり,1つのキーに対して1つのデータを紐づけ保存します.データは文字列だけでなく,様々な型を使用できます. メモリにデータを保存するため,応答ががとても早いことが特徴です.この特徴により,一般的なデータベースとは異なる用途でも利用されます.

インメモリデータベースとは

データをハードディスクではなく,メモリ上に保存するデータベースです.メモリはハードディスクよりも読み書きが速く,データベースの応答を高速化できます.

メモリは揮発性のため,サーバーが落ちるとデータが消えてしまいます.そのため,必要に応じてディスクに保存し,データを永続化することもできます.

特徴

  • 高速

    すべてのデータがメモリ上に保存されるため,読み書きがとても速いです.そのため,多くの操作がある場合でも順番に処理し,データの整合性を保つことができます.

  • データ型が豊富

    他のキーバリューストアでは文字列しか保存できない場合が多いですが,Redisでは文字列のほかにも様々な型でデータを保存することができます.

  • 永続化

    データはメモリ上に保存されますが,必要に応じてディスクに保存することもできます.そのため,サーバーが落ちてもデータを復元することができます.

  • 水平スケーリング

    複数のRedisサーバーにデータを分散して保存したり,バックアップしたりすることができます.データ量が増えた時のスケールアウトや,データのバックアップができます.

よくある使われ方

インメモリデータベースとしての特徴から,様々な用途で使われます.

  • キャッシュ

    頻繁にアクセスされるデータをメモリに保存することで,データベースへのアクセス回数を減らし,応答速度を向上させます.

  • セッション管理

    複数のアプリケーションの間でユーザーのセッションデータを期限付きで保存します.

  • リアルタイム分析

    データをリアルタイムで集計し,分析します.

  • メッセージング

    サーバー間やクライアント間でメッセージを配信し,リアルタイムの通知やチャット機能を実現します.

  • キュー

    タスクを順番に処理するためのキューとして利用できます.

  • ベクトル検索

    ベクトルを保存し,意味検索やRAGなど,複雑な検索をすることができます.

データ型

Redisでは様々なデータ型を扱うことができます.代表的な一部のデータ型を紹介します.詳しくは公式ドキュメントを参照してください.

  • 文字列(String)

    文字列,シリアル化されたオブジェクト,バイトの連続した値を保存できます.

  • リスト(List)

    文字列のリストです.順序付けて保存されます.

    Redisのリストは連結リストで実装されており,リストの先頭や末尾に要素を追加したり削除したりする操作が高速です.一方,リストの途中に要素を追加したり削除したりする操作は遅くなります.

    大量の要素の中央に要素を追加したり削除したりする場合は,リストではなく,セットやソート済みセットを使うことが推奨されています.

  • セット(Sets)

    文字列の集合です.順序は保証されず,重複する要素は保存されません.

    Redisのセットはハッシュテーブルで実装されており,集合に対する操作が高速です.

  • ソート済みセット(Sorted Sets)

    文字列の集合です.重複する要素は保存されません.それぞれの要素にスコアを付与し,スコアの順序で保存されます.

  • ストリーム(Streams)

    メッセージのキューとして利用できます.メッセージ(Entryと呼ぶ)は順序付きで保存され,IDを指定して取得することができます.

参考

Redisの公式チュートリアルです.Redisとは何か,どのような用途で使われるのかが簡単に説明されています.(英語)

インメモリデータベースの概要を掴みやすい記事です.