1. 16 のデータベースの起源
Redis は、辞書構造のストレージ サーバーです。Redis インスタンスは、データを保存するための複数の辞書を提供します。クライアントは、データを保存する辞書を指定できます。 これは、リレーショナル データベース インスタンスで複数のデータベースを作成する方法 (次の図を参照) に似ているため、各辞書を独立したデータベースとして理解できます。
MySQL インスタンスを例に挙げます
Redis はデフォルトで 16 のデータベースをサポートしますが、これは Redis 構成ファイル redis/redis でデータベースを調整することで変更できます。 .conf この値を設定した後、Redis を再起動して構成を完了します。
クライアントが Redis との接続を確立すると、データベース No. 0 がデフォルトで選択されますが、SELECT コマンドを使用していつでもデータベースを変更できます。
実際のプロジェクトでは、次の図に示すように、Redis 構成ファイルの形式でデータベースを指定できます。
2. Redisの「データベース」の概念を正しく理解する
Redis はカスタム データベース名をサポートしていないため、各データベースには番号が付けられます。 開発者は、保存されたデータとデータベースの間の対応関係を記録する必要があります。 さらに、Redis はデータベースごとに異なるアクセス パスワードの設定をサポートしていないため、クライアントはすべてのデータベースにアクセスできるか、すべてのデータベースにアクセス権限がないかのいずれかになります。 ただし、Redis の「データベース」概念を正しく理解するには、次のコマンドについて言及する必要があります。
このコマンドは、インスタンス内のすべてのデータベース データをクリアできます。これは、Redis の「データベース」概念とは異なります。私たちが話しているのは、よく知られているリレーショナル データベースとは異なります。 リレーショナル データベースの複数のライブラリは、さまざまなアプリケーションのデータを保存するためによく使用されますが、インスタンス内のすべてのライブラリ データを同時にクリアする方法はありません。 したがって、Redis の場合、これらのデータベースは名前空間に似ており、さまざまなアプリケーションからのデータを保存するのには適していません。 たとえば、アプリケーションの本番環境ではデータベース 0 にデータを格納し、テスト環境ではデータベース 1 にデータを格納することができますが、データベース 0 にアプリケーションのデータを格納するのは適切ではありません。アプリケーション A のデータを格納し、アプリケーション B のデータを格納するデータベース No. 1 は異なります。アプリケーションはデータを格納するために異なる Redis インスタンスを使用する必要があります。 Redis は非常に軽量で、空の Redis インスタンスは約 1M しか消費しないため、複数の Redis インスタンスが余分なメモリを大量に消費することを心配する必要はありません。
3. 1 つのインスタンスはクラスター内の複数の DB をサポートしますか?
上記はすべて単一の Redis に基づいていることに注意してください。 クラスターの場合、Redis クラスター モードには db0 が 1 つしかないため、select コマンドを使用した db の切り替えはサポートされません。 クラスターとスタンドアロン Reid の違いを詳しく説明するために、興味のある友人は関連情報を調べて理解を深めてください。ただし、ここでは説明しません。
キー バッチ操作のサポートは制限されています。たとえば、mget と mset はスロット内に存在する必要があります。
キー トランザクションと Lua のサポートは制限されています。操作のキーはノードにある必要があります
キーはデータ パーティションの最小粒度です: Bigkey パーティションはサポートされていません
サポートされていません複数のデータベースをサポートします: クラスター モードでは db0 が 1 つだけあります
コピーは 1 つのレベルのみをサポートします: ツリー コピー構造はサポートされません
以上がRedis のデータベース概念とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。