1. ホーム
  2. レディス

[解決済み】Redisデータベースを複数持つ意味とは?

2022-04-09 01:19:06

質問

そこで、redisに保存しているデータを別のデータベースに分割したいのですが、ある特定の種類のデータに対してkeysコマンドを使用する必要がある場合があり、それを高速化するために分割したいと思うようになりました。

複数のデータベースに分割しても、すべてはシングルスレッドで、1つのコアしか使えません。同じマシンでRedisの別のインスタンスを立ち上げれば、さらに1つのコアを使うことができます。さらに、Redisデータベースには名前をつけることができないし、より論理的な識別子もつけられない。では、なぜ、いつ、複数のRedisデータベースを使いたいかというと、データベースを追加するたびにRedisのインスタンスを立ち上げるのではなく、Redisデータベースを複数使いたいのです。それに関連して、なぜRedisはデータベースを追加するたびに追加のコアを利用しようとしないのだろうか?データベース間でシングルスレッドであることの利点は何ですか?

解決方法は?

原則として、同一インスタンス上のRedisデータベースは、RDBMSデータベースインスタンスのスキーマと何ら変わりません。

では、なぜ、どのような場合に複数の Redisデータベースは、Redisの追加インスタンスをスピンアップするのではなく、Redis を追加する必要があるのでしょうか?

Redisデータベースを同じredisインスタンスで使用する明確な利点が1つあり、それは管理です。アプリケーションごとに個別のインスタンスをスピンアップする場合、例えば3つのアプリケーションがあるとすると、3つの個別のredisインスタンスになり、それぞれ本番ではHA用にスレーブが必要になるので、合計6つのインスタンスになります。管理の観点からは、すべてのインスタンスを監視し、アップグレードやパッチを行う必要があるため、すぐに面倒なことになります。Redisに高I/Oで過負荷をかける予定がないのであれば、SLAを満たすスレーブ付きのシングルインスタンスの方がシンプルで管理しやすいでしょう。