🇵🇼

【ザックリ解説】Redisが高速で動作する理由

2022/12/14に公開

はじめに

今回の記事では、MongoDBと同様にNoSQLデータベースの代表格であるRedisが高速で動作する理由をザックリ解説する。

なお、今回の記事ではRedisの説明は簡潔に行い、「Redisがなぜ高速で動作するのか」ということに焦点を当てて解説する。

Redisとは

IT用語辞典「e-words」によれば、Redisは以下のように説明されている。

Redisとは、メモリ上でデータを管理するインメモリデータベースの一つ。オープンソースソフトウェアとして公開されている。

リレーショナルデータベースとは異なる構造を持ついわゆるNoSQL型のデータベースシステムで、キーバリューストア(KVS:Key-Value Store)として動作する。任意の保存したいデータ(値:value)に対し、対応する一意の標識(キー:key)を設定し、これらをペアで保存する値(value)として様々なデータ構造を利用することができ、文字列、バイナリデータ、リスト、集合(セット)、ハッシュなどを保存することができる。

上述の引用をまとめると、Redisは以下のようなデータベースである。

  • メモリ上でデータを管理するインメモリデータベースの1つ。
  • NoSQLデータベースの中でも、キーバリュー型でデータを管理する。
  • 様々なデータ構造(文字列、バイナリデータ、リスト、集合やハッシュなど)を保存する値として利用できる。

Redisが高速で動作する理由

理由は大きく2つある。

  • すべてのデータをメモリ上に展開・保管しているから
  • データを複製できるから(マスタースレーブ型レプリケーション)

それぞれ順番に解説する。

すべてのデータをメモリ上に展開・保管しているから

Redisが高速に動作する最大の要因は、Redisがすべてのデータをメモリ上に展開・保管しているからである。メモリ上にあるデータへのアクセスは、ディスク上のデータへのアクセスより遥かに簡単である。

余談だが、Redisのようにメモリ上でデータを管理するデータベースをインメモリデータベースと呼ぶ。

データを複製できるから

Redisが高速で動作するもう一つの理由は、データを複製できるからである。これを専門用語ではレプリケーションと呼ぶ。Redisのレプリケーションの仕組みはマスタースレーブ型に該当する。

IT用語辞典「e-words」によると、マスタースレーブ(master-slave)型は複数の機器や装置、ソフトウェア、システムなどが連携して動作する際に、一つが管理・制御する側、残りが制御される側、という役割分担を行う方式を意味する。[1]

Redisでは、マスターノードのデータをスレーブノードに複製することで、データの読み込みにかかる負荷を分散している。

おわりに

Redisが高速なのは、他の多くのデータベースのようにディスク上にデータを保存するのではなく、メモリ上にデータを保存するためであるメモリ上のデータへのアクセスは、ディスク上のデータへのアクセスよりもはるかに高速であるため、データの読み取りと書き込みが非常に高速に行われる。Redisはマスタースレーブ型レプリケーションができるので、マスターノードのデータをスレーブノードに複製できる。これによって、データの読み込みにかかる負荷を分散できる。

さらに、Redisは非常に軽量かつ効率的に設計されており、これも性能向上に役立っている。

参考サイト・動画一覧

https://youtu.be/G1rOthIU-uo

https://blog.devgenius.io/lets-dance-on-the-redis-floor-d93e02828bef

https://e-words.jp/w/Redis.html

https://qiita.com/keinko/items/60c844bcf329bd3f4af8

https://openstandia.jp/oss_info/redis/

脚注
  1. 余談だが、e-wordsによると英語圏では機器の関係性に言及する際に「主人と奴隷」という言葉を当てることの是非に関して論争が起こっている。 ↩︎

GitHubで編集を提案

Discussion