【ザックリ解説】Redisが高速で動作する理由
はじめに
今回の記事では、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は非常に軽量かつ効率的に設計されており、これも性能向上に役立っている。
参考サイト・動画一覧
-
余談だが、e-wordsによると英語圏では機器の関係性に言及する際に「主人と奴隷」という言葉を当てることの是非に関して論争が起こっている。 ↩︎
Discussion