メインコンテンツへスキップ

Redis使ってみた

· loading · loading ·
kiitosu
著者
kiitosu
画像処理やデバイスドライバ、データ基盤構築からWebバックエンドまで、多様な領域に携わってきました。地図解析や地図アプリケーションの仕組みにも経験があり、幅広い技術を活かした開発に取り組んでいます。休日は草野球とランニングを楽しんでいます。
目次

はじめに
#

仕事で使うかもしれないのでちょっと調べてみました

まず以下を読みました。わかりやすい。

次に以下に従ってチュートリアルをやってみます。

と思ったんですが、リンク先に行くと以下を勧められました。

以下のようにRedisの使い方を学べるコースがあります。

「Introduction to Redis for AI」とか気になりますね。ただ、今回は初回勉強ということで、「Get started with Redis」をやってみます。日本語字幕がないのがちょっときついですね。

Getting Started with Redis
#

Redisとは
#

  • インメモリデータベースである
  • キャッシング、セッション管理、ベクトルサーチ、特徴量ストア、リーダーボードや他にも様々な機能が使えます。
  • ビルドが簡単で速い
  • 3つのデプロイ方法がある
    • 「Community Edition」
    • 「Redisクラウド」
    • 「Redisソフトウェア」 Redisソフトウェアはビジネス用でストレージの自動拡張や24x7サポートが受けられます。セルフマネージでオンプレミスでもクラウドでもどちらでも良いようです。

ところどころクイズ形式で理解を深めながら勉強できます。

データベースを作ってみる
#

手っ取り早く試すには「Redisクラウド」の無料枠を使うのが良い。あるいは「Community Edition」をDockerから立ち上げるもの簡単で良い。今回はRedisクラウドを使ってみます。以下の2ステップで簡単に作成ができます。

  1. Redisのアカウントを作ります
  1. データベースを作る
    「Free」が選ばれていることを確認します。 データベース名は必要に応じて変更。 Cloud vendorは、AWS、GCP、Azureのいずれかを選択します。 Regionも選べます。

開発者向け Redis Insight ってなあに?
#

Redisの利用状況を見られるダッシュボードです。プロファイラやその他の解析ツールなど便利な機能があります。

データベースの画面から「View and manage data with Redis Insight」の「Launch」をクリックします。

「Load sample data」からデータをロードします。

:::message ファイル内のすべてのコマンドはデータベースに対して自動的に実行されます。本番環境のデータベースでは実行しないでください。 :::

チュートリアルでは「profiler」ボタンを押してみてみましょう。という記載がありますが、何故かボタンが表示されず確認はできませんでした。

また、「Analysis tool」というメニューもありませんでした。チュートリアルとして公開しているのであれば、Freeでできる範囲を紹介してほしいところですね。

:::message 動画のあとにRedis Insightのアプリのダウンロード、クラウドのDBとの接続、手順が紹介されていました。これは明らかに順番が逆ですね。 :::

keys values strings について
#

Redisのデータ構造について学びます。

  • key-valueの形でデータを保持する
  • バイナリデータの文字列も保持できる
  • Redis Insightから CLIを使って get set removeなどができる
  • ユニークなIDとキースペース(ネームスペースのようなもの)によってデータを構造ができます

listsを使ってみる
#

データ構造として引き続きlistsの使い方を見ていきます。

  • list は順序付きのバイナリ安全な文字列のコレクションです
  • リストの左右どちらからでもPush/Popできます
  • インデックスを指定したりレンジを指定するなどで値を取得することもできます
  • 以下のような例で使われます
    • ユーザの行動履歴
    • タスクキュー
    • ブラウザのページ遷移履歴のスタック

Setsを使ってみる
#

同様にSetsです。

  • set は順序なしのユニークなバイナリ安全な文字列のコレクションです
  • もし同じkeyが存在すれば、上書きされません。先勝ちです。
  • Setでは論理演算としてUNION(和集合) INTERSECTION(積集合) DIFFERENCE(差集合)ができます
  • 以下のような例で使われます
    • メンバーや製品の紹介ページ

Hashesを使ってみる
#

Hashです。Redisのデータの持ち方がHashぽいのでHashのHashですね。

  • hash はバイナリセーフな文字列のキーバリューペアです
  • RedisのkeyとHashのkeyがややこしいので、Hashのkeyはfieldと呼びます。
  • HashにはRediSearchで使えるインデックスを付与できる
  • 以下のような例で使われます
    • ストア等のセッション情報
    • ユーザプロファイル
    • RBDのキャッシュとして

Sorted Setsを使ってみる
#

次に順序付きのSetsです。

  • sorted set は Setにスコアを付与することでListの特徴を備えたSetです
  • データのスコアや順位を取得でき、スコアや順位を範囲指定してデータを取得できます
  • 論理演算時はスコアの集約関数(sum,min,max等)を制御できます
  • リーダーボードやレコメンドをするときに便利です

JSONを使ってみる
#

主要なデータ型としては最後!JSON!

  • JSON はドキュメントとしてデータを保持します
  • JSONPath クエリーによってJSONの要素ごとに読み込みや操作ができます
  • セッション情報を保持するときに便利です

その他のデータ構造
#

  • 確率的データ構造を利用でき、ユニークな数を概算する hyperloglog や データの存在をチェックする bloom filter などを使えます。
  • 時系列データには Event streams を使えます
  • 位置情報の解析をしたい場合は Geosets を使えます
  • 他にも Bitmaps Bitfields などもあります

キーの有効期限を使用する
#

  • キーには2種類あります
    • 永続キー(persistent keys):デフォルトのキーで明示的に削除するまで残る
    • 一時キー(volatile keys):キーの有効期限が切れると自動的に削除される
      • キャッシングやセッション管理に使えます

ユースケースの整理
#

  • キャッシングにより数ミリセカンドでのスケーリング可能なソリューションを提供
  • 複数要素の検索やジオ検索により複雑なクエリを実行できる
  • セッション管理は地域ごとに保存されることで高速に利用可能
  • ベクターサーチにより、非構造化データを意味でキャッシングでき、レコメンドエンジンやチャットボットで利用可能

おわりに
#

今日はRedisの使い方を勉強しました。公式に従ったので重要な点を学べたのかなと考えています。位置情報の解析や機械学習連携が気になります。別途勉強してみようと思います。

参考書籍
![実践Redis入門](https://m.media-amazon.com/images/I/81PLmiIVq6L.SY200.jpg =200x)
Reply by Email

関連記事

MCPサーバーを使ってmermaidでジョジョの相関図を作る
· loading · loading
MCP Python SDKでMCPサーバーを作ってみる
· loading · loading
Docker Desktop MCPサーバーを使ってみる
· loading · loading