インフラ

【Redis基礎】Redisとは何か?Redisの基本を解説

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

本記事では、Redisの概要について解説します。
Redisは、最近のモダンなWebシステムでは使われることが増えてきた、
NoSQLの一種です。

Redisの知識は、インフラの知識にも、
バックエンドの知識にもなるので、
近年重要度が高まっている気がします。

そこで本記事では、Redisの基本について解説します。

Redisとは?

Redisとは、インメモリのデータストラクチャーと定義されることが多く、
KVSなどが特徴に挙げられます。

https://redis.io/docs/about/

といっても、正直ピンとこないと思います(私がそうだった)

インメモリ?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/オブジェクトとジェネリクス
参考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とマグカップの画像

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

これで値を取得することができます。

  • この記事を書いた人
  • 最新記事

reisuta

Webエンジニア | 20代中盤 | 大学時代はGmailすら知らないIT音痴でプログラミングとは無縁の生活を送る → 独学でプログラミングを学ぶ → Web系受託開発企業にエンジニアとして就職 → Web系自社サービス企業に転職 | 実務未経験の頃からVimを愛好しており、仕事でもプライベートでも開発はVimとTmuxを使っているので、VSCodeに疎いのが最近の悩み。何だかんだでやっぱりRubyが好き。

おすすめ記事はこちら

Vim/Neovimプラグイン 1

プラグインをどれだけ入れるかは、その人の思想なども関係するので、一概にこれがいいというのはないかもしれません。 プラグインを全く入れない人もいれば、100個以上入れる人もいます。 ただそれでも、これだ ...

VimとNeovimの比較 2

本記事では、VimとNeovimの違いについて、解説します。 VimとNeovimの違いについては、普段頻繁にVimなどを使う方でなければ、正直、あまり気にしなくてもいいかなと思います。 ただ、Vim ...

Ruby変数やすべてがオブジェクトについて 3

本記事は、Rubyの基礎文法である、変数や真偽値、論理演算子に触れると同時に、「すべてがオブジェクト」というRubyの特徴的な思想についても解説します。 この思想は、Rubyの文法の根幹になっているの ...

4

エンジニアにおすすめの技術書 書籍学習は、エンジニアの嗜みみたいなところがありますが、 良書というものは、意外とそこまで多くもありません。 そこで本記事では「技術書マニアの筆者が厳選した技術書20選」 ...

5

エンジニアになるには? プログラミングは、専門性が高く自分一人で勉強するのが大変に感じることも多いですよね。 そこで本記事では「おすすめのプログラミングスクール5選」を特徴と、現役エンジニア目線で優れ ...

-インフラ