Redisとは
Redisとは、オープンソースソフトウェアのインメモリデータストア(インメモリデータベース)を指します。データベース・キャッシュ・メッセージブローカとして活用されます。もう少しわかりやすく言うと、メモリ上にデータを展開し、高速性を実現したデータベースと言うことができます。 【参考】:redis
Redisの名称の由来は、Remote Dictionary Serverの頭文字と2番目の文字から作った略語です。読み方は、レディスまたはレディースとなります。記述言語はSQLを使わないNoSQLに分類されており、キーバリュー型の記述形式となります。
Redisの特徴
Redis自体はANSI C言語で記述されており、移植性が高いのが特徴です。Linuxが推奨環境となります。Redisはインメモリ型ですので、全てのデータがメモリ上にあります。そのためHDDアクセスより高速にデータアクセスできます。さらに複数の操作をまとめて1度に実行できますので処理自体も高速です。
全データがメモリにあるため、そのままではデータが消失してしまいます。これを回避するためにデータをディスクに保存することができます。その機能を永続化機能と言います。
永続化のオプションとして、定期的なディスクへのダンプやディスクベースドログへのコマンド追記が選択できます。インメモリーキャッシュ機能として利用する際には、永続化機能を停止することもできます。
Redisの利用例
使い道としてすぐ思い浮かぶのはキャッシュ機能です。具体的にはデータベースのデータをキャッシュしておき、参照主体の場合に再利用することでアクセス時間を短縮することができます。その他オンライン処理の中間データとして活用が可能ですので、オンラインゲームの順位表更新やIoTゲートウェイの中間データをキャッシュするのに便利です。
AWSでは、インメモリキャッシングサービスであるAmazon ElastiCacheのエンジンにRedisを採用しています。アプリケーションのレイテンシーをマイクロ秒に短縮し、オペレーションオーバーヘッドを最小化します。ゲームやIoTに加えて、金融サービスやヘルスケア用途でも想定しています。 【参考】:AWS Redis
その他の利用シーンとしてRedis公式サイトでは、利用例としてTwitter・GitHub・Weibo・Pinterest・Snapchat・Craigslist・Digg・StackOverflow・Flickrが掲載されています。同様にTechStacksにはさらに多くのRedis利用サイトが公開されています。 【参考】:Who's using Redis? 【参考】:TechStacks popular sites using Redis
Redisの使い方
Redisは公式サイトからダウンロードし、makeでバイナリを作成し利用します。同様にDockerイメージが公開されていますので、Docker利用者はDocker Hubからイメージを保存(pull)して利用することもできます。 【参考】:redis Download 【参考】:Docker Hub redis
具体的な手順は以降で説明していきます。
Redisのインストール方法
最初にRedisのモジュールを公式サイトからダウンロードしておきます。2022年1月時点の最新Stableバージョンは6.2.6です。「Download 6.2.6」のリンクをクリックすると”redis-6.2.6.tar.gz”ファイルがダウンロードできます。
この他ダウンロードの指定方法として、”http://download.redis.io/redis-stable.tar.gz”を指定するとその時点の最新Stableバージョンが入手できます。ダウンロードはブラウザからhttpで指定したり、wgetコマンドで指定したりすることができます。ダウンロードファイルは”tar xvzf redis-stable.tar.gz”のように解凍し展開します。
解凍展開が完了するとredis-stableディレクトリが作成しますので、”cd redis-stable; make”等でバイナリを作成します。makeにより以下の実行ファイルが作成されます。
・redis-server Redis Server本体です。 ・redis-sentinel モニター・フェールオーバーを行うRedis Sentinelです。 ・redis-cli コマンドラインインターフェイスです。 ・redis-benchmark パフォーマンス測定ツールです。 ・redis-check-aofとredis-check-rdb ファイルチェックツールです。
利用する際には、redis-serverとredis-cliの2つの実行ファイルをパス指定のディレクトリーに格納しておきます。
sudo cp src/redis-server /usr/local/bin/
sudo cp src/redis-cli /usr/local/bin/
インストール方法ですがMacOSではHomebrewを使うこともできます。WindowsではWSL(Windows Subsystem for Linux)で利用可能となります。
Redisの起動と停止
redis-serverを実行することでRedisが起動し、利用可能になります。動作確認はredis-cliでpingコマンドを実行します。PONGが返信されれば正常です。
$ redis-cli ping
PONG
redisのバージョン確認は引数で”--version”または”-v”を指定します。redis-serverやredis-cliに引数を追加し、実行するとバージョン番号が表示されます。
redis-server -v
redis-cli -v
redisの停止はredis-cliで”shutdown”と入力することで、redis-serverの必要なデータが保存され終了します。
Redisのコマンド実行
Redisのコマンド実行は、redis-cliを用います。コマンドを引数で実行することもできますし、対話型実行も可能です。先ほど動作確認で使用したpingコマンドを対話型で実行してみます。
$ redis-cli
127.0.0.1:6379> ping
PONG
プロンプトで表示された”127.0.0.1:6379”は接続したredis-serverのIPアドレスとポート番号です。もし、異なるサーバーへ接続する際にはconnectコマンドを用います。以下の例はサーバー名serverへ接続する場合です。指定する場合はIPアドレス指定でも構いません。
$ redis-cli
127.0.0.1:6379> connect server 6379
server:6379> ping
PONG
このように接続が成功するとプロンプトに表示されます。connectに失敗するとプロンプトが”not connected>”となります。
Redisの簡単な使用方法
Redisはインメモリデータベースですので、メモリに保存したデータの更新と参照を行います。簡単な利用例はカウンターです。以下の例ではカウンターの初期設定を行い、順にカウントアップしていきます。初期値を1とすると以下のように利用できます。
$ redis-cli
127.0.0.1:6379> set data "1"
"OK"
127.0.0.1:6379> incr data
(integer) 2
:
値の確認は最後のincrコマンドの結果を確認するか、getコマンドで確認します。
$ redis-cli
127.0.0.1:6379> get data
"2"
登録したkeyを削除するにはdelコマンドを用います。
127.0.0.1:6379> del data
"OK"
インメモリデータベースのデータ全体を削除する際はflushallやflushdbを使います。
Redisのコマンド一覧
Redisの処理は多岐に渡りサポートされており、それぞれ該当するコマンドが用意されています。
具体的にはStrings・Hashes・Lists・Sets・Sorted sets with Range Queries・Bitmaps・HyperLogLogs・GeoSpatial Indexes・Streams等のデータ操作コマンドやサーバー・クラスタ管理コマンド等が容易されています。コマンド一覧と詳細は以下「The full list of commands」のリンクにコマンド情報が掲載されています。 【参考】:redis The full list of commands
もしコマンド一覧の要点だけ確認したい場合は、以下の「Redis Cheat Sheet」が公式サイトで紹介されています。Strings・Lists・Client/Server・Sets・Database・Scripts・Hashes・Sorted sets・HyperLogLogsの分類に整理された主要コマンドが掲載されています。 【参考】:Redis Cheat Sheet
Redisの活用してアプリケーション効率化を進めましょう
Redisは、高速で簡単に利用可能なインメモリデータベースです。そのためアプリケーションパフォーマンスを高めることが容易で、その開発工数も削減できます。SQLを使わないNoSQL型であり取扱いが簡単なため、この1年で利用者が急増しています。
Redisは自身でサーバーに導入する他に、Dockerイメージやクラウドサービスでも工数をかけずに利用できます。アプリケーションの性能問題を抱えている方はすぐにでも適応を検討することをおすすめします。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから