Redisはkey-valueストアをベースとしたオープンソースの高速なインメモリデータストアで、近年ますます人気が高まっています。それでは、どうやってRedisデータベースを利用しますか?この質問に回答するため、本文では、まずRedisデータベースの基本情報を紹介した上、Redisの使い方を完全に皆さんに解説していこうと思います。
また、アプリ開発の際では、Apidogという使いやすいAPI管理ツールを使って、APIをRedisデータベースに連携して、API取得データを直接にRedisデータベースに書き込んだり、Redisのデータを利用してAPIのレスポンスデータを検証したりすることを簡単にを行う方法を一緒に紹介します。
Redisデータベースとは
Redisはkey-valueストアを基盤としたオープンソースの高速なインメモリデータストアです。従来のSQLデータベースに比べてみると、Redisは低遅延で高速なデータ処理が可能にあり、高負荷なアクセスにも対応できます。そこで、リアルタイム処理と高負荷処理に向いているデータベースだと言えるのでしょう。
Redisデータベースの特徴
それでは、このRedisデータベースにはどのような特徴があるのでしょうか?次は、Redisの主な特徴を皆さんに紹介します。
データの読み書きが非常に高速である
データをメモリにキャッシュするアーキテクチャのため、低遅延でアクセスが速い
文字列、リスト、セット、ソート済みセット、ハッシュなどのデータ構造が利用できる
RDBやAOFといった永続化の機能を持ち、データの保存が可能
トランザクション、パブ/サブ、Luaスクリプトなど、高度な機能を提供
マスタースレーブレプリケーションによる高可用性構成が実現できる
オープンソースでコミュニティのサポートが大きい
以上のような、高速性、豊富なデータ構造、機能面での充実度がRedisの大きな特徴としてあげられます。これらの特徴により、高負荷なアプリケーションでも要求されるパフォーマンスを発揮できます。
Redisの利用シーン
Redisデータベースは人気が高まると共に、利用シーンも結構広くなってきています。次は、Redisデータベースの主な利用シーンを紹介します。
セッションストア
ウェブアプリケーションのセッションデータを高速に保存・取得できるため、セッションストアとしてよく利用される。
キャッシュ
データや処理結果をキャッシュすることでアプリケーションの速度を向上させられる。
ジョブキュー、メッセージブローカー
非同期タスク、メッセージをRedisで管理することができる。
リアルタイムアナリティクス
データをRedisに蓄積し、リアルタイムで分析処理を行うことができる。
ゲーム内でのランキングやスコアの管理
低遅延でのデータ取得・更新が必要なランキング機能等に適している。
このほかにも、リアルタイム処理を要する様々なシーンでRedisは利用されているcoreなデータストアです。
Redisのキーの種類
Redisはkey-valueストアをベースとしたオープンソースの高速なインメモリデータストアとして、Redisに格納される全てのデータはある特定のキーに紐づけて値が保存されています。こうしたkey-valueの形式がRedisのデータモデルの根幹を成しており、キーはあらゆるデータ操作の際に指定する基本単位として、Redisデータベースの基盤にもなっているといえます。
それでは、Redisにおける主なキーの種類にはどのようなものがありますか?
文字列(String)
最も基本的なキータイプ。文字列や数値を値として扱える。
リスト(List)
文字列等の要素を両端に追加/取得できるデータ構造。FIFOキューとして利用可。
セット(Set)
重複がない文字列要素の集まりを表すデータ構造。要素の追加/削除が可能。
ソート済みセット(Sorted Set)
要素にスコアを付与した上で要素をソートできるセット。スコアで並び替えや取得範囲指定等ができる。
ハッシュ(Hash)
key-value形式のフィールドを持つデータ構造。ハッシュテーブルとしての利用が可能。
ハイパーログログ(HyperLogLog)
効率的に集合体のユニークな要素数を推定するprobabilisticデータ構造。
地理空間(GEO)
緯度経度座標上の位置データを扱う専用データ型。geo検索が可能。
Redisはこれらの豊富なデータ型を使いこなすことで、様々な目的に合わせた柔軟なデータモデリングができます。
Redisのインストール
Redisをまだパソコンにインストールしていない場合、次の手順を参照して、Redisをインストールできます。
ステップ⒈Redisのオフィシャルサイト(http://download.redis.io/releases/redis-stable.tar.gz)から最新安定版をダウンロードします。
ステップ⒉ 次のようなtarコマンドで、redis-stable.tar.gzを解凍します。
tar xvzf redis-stable.tar.gz
ステップ⒊コマンドラインツールで、展開したディレクトリに移動します。
cd redis-stable
ステップ⒋ 同じディレクトリでmakeコマンドでビルドします。
make
ステップ⒍ redisサーバーの起動 します。
src/redis-server
ステップ⒎ redisクライアントの起動します。
src/redis-cli
以上の手順でインストールが完了します。srcディレクトリに移動し、redis-serverコマンドとredis-cliコマンドでそれぞれサーバーとクライアントを起動できます。
Redisの基本的な使い方を解説
Redisデータベースの利用を始める前に、まずは、Redisサーバーとクライアントの起動と停止を行う方法をわかっておく必要があると思います。
Redisサーバーの起動
$ src/redis-server
デフォルトでは6379ポートで起動します。ポートやその他設定を変更したい場合はredis.confファイルを編集します。
Redisサーバーの停止
$ src/redis-cli shutdown
redis-cliからshutdownコマンドを実行することで停止できます。
Redisサーバーの再起動
一度停止した後に再起動するには、単純に上記の起動コマンドを再実行します。
$ src/redis-server
すでにポートが使用されている場合はエラーになるため、一度停止してから再起動することをオススメします。
Redisクライアントの起動
$ src/redis-cli
以上のように、redis-serverとredis-cliコマンドでそれぞれサーバーとクライアントを起動・停止できます。
Redisデータベースの操作
Redisサーバーとクライアントを起動した上、次のようなコマンドを使って、Redisデータベースを操作することができます。次は、Redisデータベースで基本的な使い方のコード例を皆さんに紹介します。
- サーバーへの接続:Redisサーバーにクライアントとして接続する
$ redis-cli
- キーの設定:"key1"というキーに"value1"という文字列値を設定する
redis> SET key1 "value1"
- キーの取得:"key1"に紐づいている値を取得する
redis> GET key1
- キーリストの取得:現在存在する全てのキーの一覧を取得する
redis> KEYS *
- キー削除:"key1"というキーをデータベースから削除する
redis> DEL key1
- expireの設定(自動削除): "key2"に10秒の自動削除有効期限(TTL)を設定する
redis> SET key2 "value2" EX 10
- リストのRPUSH(右側へ追加) :"list1"というリストの末尾に順に"a" "b" "c"を追加
redis> RPUSH list1 "a" "b" "c"
- リストのLRANGE(取得):"list1"の先頭から末尾まで全要素を取得する
redis> LRANGE list1 0 -1
- セットのSADD(要素追加): "set1"というセットに要素"a" "b" "c"を追加
redis> SADD set1 "a" "b" "c"
- セットのSMEMBERS(取得):"set1"に含まれる全要素を取得する
redis> SMEMBERS set1
Redis使い方:利用できるコマンド一覧
上記の内容では、Redisのサーバーとクライアントを起動・停止する方法、及び基本的な操作方法を皆さんに紹介しました。実際には、Redisでは利用可能なコマンドは他にも数多く存在しています。この部分では、Redisデータベースで利用できるコマンドを皆さんに紹介します。
まずは、Redisでよく行われる操作のコマンドを1つのテーブルにまとめてみました。
Redisでよく使われる操作コマンドの一覧表
コマンド | 概要 | 説明 |
---|---|---|
SET | キーを設定 | 文字列や整数などの値をキーに紐づけて設定 |
GET | キーの値を取得 | キーに紐づく値を取得 |
DEL | キーを削除 | 1つまたは複数のキーを削除 |
EXPIRE | 有効期限を設定 | キーの自動削除有効期限(TTL)を設定 |
INCR | 値をインクリメント | 整数値を1増加 |
DECR | 値をデクリメント | 整数値を1減少 |
LPUSH | リストへ先頭に追加 | リストの先頭に1つまたは複数の値を追加 |
RPOP | リストの末尾から取得 | リストの末尾の値を取得し、リストから削除 |
LLEN | リストの長さ取得 | リストに含まれる値の件数を取得 |
LINDEX | リストの任意位置要素取得 | リストの任意インデックス位置の要素を取得 |
LRANGE | リストの範囲取得 | リストの指定範囲の要素を取得 |
LSET | リスト内要素の更新 | リスト内指定インデックス位置の要素を更新 |
LREM | リスト内要素の削除 | リスト内の指定値を持つ要素を削除 |
SADD | セットへ追加 | 重複のない値をセットに追加 |
ZADD | ソートセットへ追加 | スコアと値を紐づけてソートセットに追加 |
ZRANGE | ソートセットの範囲取得 | ソートされた順に指定範囲の要素を取得 |
HSET | ハッシュにフィールドを設定 | ハッシュキーの指定フィールドに値を設定 |
HGET | ハッシュのフィールド値を取得 | ハッシュキーの指定フィールドの値を取得 |
HGETALL | ハッシュのフィールド全取得 | ハッシュキーに含まれるフィールドと値を全件取得 |
HDEL | ハッシュのフィールドを削除 | ハッシュキーの指定フィールドを削除 |
上記のテーブルでは、ただ常用のコマンドをリストしています。実際には、Redisデータベースで利用可能なコマンド数は数百でも存在しています。Redisのコマンドを全て確認してみたい方は、次のページでご参照ください。
Redisのコマンド:https://redis.io/commands/
Apidog:Redisデータベースとの連携が可能に
Webアプリを開発する際に、APIをRedisデータベースに連携すると、API取得データを直接にRedisデータベースに書き込んだり、Redisのデータを利用してAPIのレスポンスデータを検証したりすることが簡単に行われます。そこで、APIをRedisに連携できたら、作業の効率性がかなり向上できると思います。
Apidogは非常に強力的なAPI管理ツールとして、その「データベース接続」機能を利用して、簡単にRedisデータベースに接続して操作を行うことができます。
ApidogとRedisとの連携
Apidogのデータベース接続を利用すると、様々な操作が行えます。例えば:
- Redisデータベースに1クリックで接続する
- Apidogを通じて、RedisデータベースのCRUD操作を行う
- 直感的なインターフェースでRedisデータベースを操作可能
- Redisのコマンドにも対応可能で、Redisコマンドを利用してデータベースを操作可能
- Redisからデータを取得して、APIリクエストのデータとして利用可能
- APIレスポンスデータがRedisのデータにピッタリするかを検証可能
- APIレスポンスデータを直接にRedisデータベースに書き込む
- その他
![ApidogでRedisを操作する](https://assets.apidog.com/blog-ja/2023/12/image.png)
まとめ
今回の記事では、Redisデータベースの基本的な概要から、インストール、起動と停止、基本操作方法、利用シーン、コマンド一覧など、Redisの使い方をできるだけ完全に解説しました。
Key-ValueストアをベースとするRedisは、高速性、柔軟なデータ型、豊富な機能面で大きなメリットがあり、セッションストアやキャッシュ、リアルタイム処理といった場面での利用価値が高いです。
また、APIとの連携が可能なApidogを使えば、Redisへのデータの出し入れが簡単に行えるので、アプリ開発の効率化に結びつけられます。今後のアプリケーション設計でRedisの活用を検討する際には、ぜひ本記事を参考に、効果的な利用方法を検討していただければと思います。