本記事では、Redisの概要について解説します。
Redisは、最近のモダンなWebシステムでは使われることが増えてきた、
NoSQLの一種です。
Redisの知識は、インフラの知識にも、
バックエンドの知識にもなるので、
近年重要度が高まっている気がします。
そこで本記事では、Redisの基本について解説します。
Redisとは?
Redisとは、インメモリのデータストラクチャーと定義されることが多く、
KVSなどが特徴に挙げられます。
といっても、正直ピンとこないと思います(私がそうだった)
インメモリ?KVS?うん?結局どういうことって感じでした。
Redisとは、ざっくり定義するとDBの一種です。
そのため、何らかのデータを格納したい際に使われるものに
変わりはありません。
ただとはいっても、普通のDB(mysqlのような)とは、
確かに異なる特徴があって、それがRedisについての理解をややこしくしている気がします。
インメモリとは?
Redisの定義に登場する、インメモリデータベースについてですが、
これは、割りとそのまんまでして、
メモリにデータを格納するから、このように呼ばれているのかと思います。
(オンメモリと呼ばれることもあります。)
データをディスクや SSD に保存するわけではないので、障害やシャットダウンなどによって、
データが容易に失われてしまうリスクがありつつも、ディスクアクセスがなくなったことで、
応答時間を短くすることができ、パフォーマンスが向上するというメリットがあります。
https://aws.amazon.com/jp/nosql/in-memory/
つまり、インメモリデータベースのRedisは、
DBに変わりはないけど、メモリにデータを格納する、
堅牢性よりもパフォーマンス重視のDBということが伺えますね。
KVSとは?
KVSとは、Key-Value Storeの略称で、
RDBのようにテーブル構造でデータを格納するのではなく、user: '山田太郎'
のようにRubyのハッシュっぽい形式でデータを格納するスタイルのことです。
KeyとValueを格納するシンプルな形式で、
プログラミングでもお馴染みの形式ですね。(JSのオブジェクトやRubyのHashなど)
-
参考【Ruby】ハッシュとシンボルについて 省略記法やシンボルと文字列の違い
本記事では、Rubyの文法の中でも特徴的な、ハッシュとシンボルについて紹介します。 特にシンボルについては、他のプログラミング言語では、あまり見かけないデータ構造かと思います。 こうしたハッシュとシン ...
続きを見る
-
参考TypeScriptのオブジェクトとは何か?型の付け方とジェネリクス
オブジェクトとは何か? 下記の記事で紹介したプリミティブ型という基本的な7つの型以外のものを、オブジェクトといいます。 具体的には、string、numberbigint、boolean、undefi ...
続きを見る
なので、RDBのようにSQLを使わない、NoSQLで見かけるデータ構造ですね。
NoSQLってなんだっけ?
NoSQLは、Not only SQLの略称で、
SQLを使わずにデータを保存するデータベースのことを指します。
すなわち、RDBと同じく、
種類の名称なので、NoSQLというDBが存在するわけではなく、
様々なNoSQLが存在します。(RedisもNoSQLです)
基本的にこれらのNoSQLは、
そのパフォーマンス性が重視されて、
技術選定されることが多いかと思います。
(多いユースケースとしては、RDBとの併用で、
RDBのインデックスやチューニングではパフォーマンスに
限界がある部分にNoSQLを用いるなど。NoSQLだけが用いられることは
かなり稀(というか私はあまり見たことがない構成です))
そのため、NoSQLは、いわゆるDBとはちょっと特徴が異なるものと言えそうですね。
結局Redisとは?
上記を踏まえると、
Redisは、KVSタイプのインメモリデータベース(NoSQL)
といったふうに定義することができそうですね。
(※Redisの場合、豊富なデータ型があるので、
単なるKVSよりも柔軟という特徴がありますが)
Redisのユースケース
Redisは、RDBに比べて、
パフォーマンスを重視したものなので、
必然的にパフォーマンスが必要な処理に採用されることがほとんどです。
具体的には、高頻度にデータが書き換わってしまい、
いちいち、ディスクアクセスしていたら、処理が追いつかないようなものに、
採用されているかと思います。
例えば、
- セッション情報
- リアルタイム性が高い処理全般
- キャッシュ
などでしょうか。
https://aws.amazon.com/jp/nosql/in-memory/
Redisのインストール
ドキュメントを参考に、macでの環境構築を紹介していきます。
https://redis.io/docs/getting-started/installation/install-redis-on-mac-os/
まずは、Homebrewでインストールします。
brew install redis
インストールしたら、動かしてみます。
redis-server
サーバーに入るには、
redis-cli
という感じです。
redis-cliでデータを保存して取り出してみる
SETコマンドで値を保存します。
SET user yamada
そして、GETコマンドでキーから値を取得します。
GET user
これで値を取得することができます。