Redisとは?人気高まるデータベースの特徴と使い方を解説!
thumb_radis_01
Redisとは?人気高まるデータベースの特徴と使い方を解説!
アンドエンジニア編集部
2022.01.28
この記事でわかること
Redisは、メモリ上にデータを展開し高速性を実現したデータベースです
データキャッシュ用途に有効で、ゲーム・IoT・金融サービス・ヘルスケア分野等で利用されます
キーバリュー型のため開発しやすく、簡単にアプリケーション高速化が実現できます

Redisとは

img_redis_01

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

IoTエンジニアとは?気になる年収や将来性を解説!

Redisの使い方

img_redis_02

Redisは公式サイトからダウンロードし、makeでバイナリを作成し利用します。同様にDockerイメージが公開されていますので、Docker利用者はDocker Hubからイメージを保存(pull)して利用することもできます。 【参考】:redis Download 【参考】:Docker Hub redis

具体的な手順は以降で説明していきます。

Dockerイメージとコンテナの違いとは?作成の流れ入門

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・HyperL­ogLogsの分類に整理された主要コマンドが掲載されています。 【参考】:Redis Cheat Sheet

Redisの活用してアプリケーション効率化を進めましょう

img_redis_03

Redisは、高速で簡単に利用可能なインメモリデータベースです。そのためアプリケーションパフォーマンスを高めることが容易で、その開発工数も削減できます。SQLを使わないNoSQL型であり取扱いが簡単なため、この1年で利用者が急増しています。

Redisは自身でサーバーに導入する他に、Dockerイメージやクラウドサービスでも工数をかけずに利用できます。アプリケーションの性能問題を抱えている方はすぐにでも適応を検討することをおすすめします

Dockerとは?使いどころやメリット・デメリットについて解説!
気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT