Redis使ってみた
はじめに
仕事で使うかもしれないのでちょっと調べてみました
まず以下を読みました。わかりやすい。
次に以下に従ってチュートリアルをやってみます。
と思ったんですが、リンク先に行くと以下を勧められました。
以下のように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ステップで簡単に作成ができます。
- Redisのアカウントを作ります
- データベースを作る

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

開発者向け Redis Insight ってなあに?
Redisの利用状況を見られるダッシュボードです。プロファイラやその他の解析ツールなど便利な機能があります。
データベースの画面から「View and manage data with Redis Insight」の「Launch」をクリックします。

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

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

また、「Analysis tool」というメニューもありませんでした。チュートリアルとして公開しているのであれば、Freeでできる範囲を紹介してほしいところですね。
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を使えます - 他にも
BitmapsBitfieldsなどもあります
キーの有効期限を使用する
- キーには2種類あります
- 永続キー(persistent keys):デフォルトのキーで明示的に削除するまで残る
- 一時キー(volatile keys):キーの有効期限が切れると自動的に削除される
- キャッシングやセッション管理に使えます
ユースケースの整理
- キャッシングにより数ミリセカンドでのスケーリング可能なソリューションを提供
- 複数要素の検索やジオ検索により複雑なクエリを実行できる
- セッション管理は地域ごとに保存されることで高速に利用可能
- ベクターサーチにより、非構造化データを意味でキャッシングでき、レコメンドエンジンやチャットボットで利用可能
おわりに
今日はRedisの使い方を勉強しました。公式に従ったので重要な点を学べたのかなと考えています。位置情報の解析や機械学習連携が気になります。別途勉強してみようと思います。
| 参考書籍 |
|---|
![]() |

Discussion