本記事では、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よりも柔軟という特徴がありますが)
![Macとマグカップの画像](https://reisuta.com/wp-content/uploads/2023/07/office-gfaa23b407_1280-1024x682.jpg)
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
これで値を取得することができます。