redis は、Nosql データベースおよびキー値ストレージ システムです。 Redis はキーと値のストレージ システムですが、文字列、リンク リスト、セット、順序付きセット、ハッシュなど、多くの値のストレージ タイプをサポートしています。
Redis は、キーと値のストレージ システムです。 Memcached と同様に、string (文字列)、list (リンク リスト)、set (セット)、zset (並べ替えられたセット - 順序付きセット)、および hash (ハッシュ タイプ) など、比較的多くの保存された値の種類をサポートします。これらのデータ型はすべて、プッシュ/ポップ、追加/削除、交差、結合、差分などの豊富な操作をサポートしており、これらの操作はすべてアトミックです。これに基づいて、redis はさまざまな並べ替え方法をサポートします。 memcached と同様に、データは効率を確保するためにメモリにキャッシュされます。違いは、redis が定期的に更新されたデータをディスクに書き込むか、追加のレコード ファイルに変更操作を書き込むこと、そしてこれに基づいてマスターとスレーブ (マスターとスレーブ) の同期が実現されることです。
Redis は、高性能のキー/値データベースです。 Redis の出現により、memcached などのキー/値ストレージの欠点が大幅に補われ、状況によってはリレーショナル データベースに対して非常に優れた補完的な役割を果たすことができます。 Java、C/C、C#、PHP、JavaScript、Perl、Object-C、Python、Ruby、Erlang およびその他のクライアントを提供しており、非常に使いやすいです。
Redis はマスター/スレーブ同期をサポートしています。データはマスター サーバーから任意の数のスレーブ サーバーに同期でき、スレーブ サーバーは他のスレーブ サーバーに関連付けられたマスター サーバーになることができます。これにより、Redis は単一レベルのツリー レプリケーションを実行できるようになります。保存すると、意図的または非意図的にデータが書き込まれる可能性があります。パブリッシュ/サブスクライブ メカニズムが完全に実装されているため、スレーブ データベースが任意の場所でツリーを同期すると、チャネルにサブスクライブして、マスター サーバーの完全なメッセージ リリース レコードを受信できます。同期は、読み取り操作のスケーラビリティとデータ冗長性に役立ちます。
Redis は完全にオープンソースで無料で、BSD プロトコルに準拠しており、高性能のキー/値データベースです。
Redis は、string (文字列)、hash (ハッシュ)、list (リスト)、set (セット)、および zset (sorted set: 順序付きセット) の 5 つのデータ型をサポートします。
Redis およびその他のキー値キャッシュ製品には、次の 3 つの特徴があります:
Redis はデータの永続性をサポートしており、メモリ内のデータをディスクに保存し、再起動時に再度読み込むことができます。使用。
Redis は、単純なキーと値の型のデータをサポートするだけでなく、リスト、セット、zset、ハッシュなどのデータ構造のストレージも提供します。
Redis はデータ バックアップ、つまりマスター/スレーブ モードでのデータ バックアップをサポートしています。
Redis の利点
非常に高いパフォーマンス – Redis は 110,000 回/秒の速度で読み取り、81,000 回/秒の速度で書き込みます。
豊富なデータ型 – Redis は、バイナリの場合の文字列、リスト、ハッシュ、セット、および順序付きセットのデータ型操作をサポートします。
アトミック – すべての Redis 操作はアトミックです。つまり、操作は正常に実行されるか、まったく実行されないかのどちらかです。個々の操作はアトミックです。複数の操作は、MULTI 命令と EXEC 命令によってラップされたトランザクション、つまりアトミック性もサポートします。
豊富な機能 – Redis は、パブリッシュ/サブスクライブ、通知、キーの有効期限などの機能もサポートしています。
Redis と他の Key-Value ストアの違いは何ですか?
Redis はより複雑なデータ構造を持ち、それらに対するアトミックな操作を提供します。これは他のデータベースとは異なる進化の過程です。 Redis のデータ型は基本的なデータ構造に基づいており、追加の抽象化を必要とせずにプログラマにとって透過的です。
Redis はメモリ内で実行されますが、ディスクに永続化できるため、データ量がハードウェア メモリを超えることはできないため、さまざまなデータ セットの高速読み取りおよび書き込みを実行するときはメモリを考慮する必要があります。インメモリ データベースのもう 1 つの利点は、ディスク上の同じ複雑なデータ構造と比較して、メモリ内での操作が非常にシンプルであるため、Redis は内部の複雑性が高くても多くのことを実行できることです。また、ディスク形式に関しては、ランダム アクセスを必要としないため、コンパクトな追加生成となります。
それでは、なぜ redis のような Nosql データベースを使用するのでしょうか?
1. データの合計サイズが 1 台のマシンに収まらない場合;
2. データ インデックスが 1 台のマシンのメモリに収まらない場合;
3. 1 つのインスタンスが収まらない場合の訪問数 (読み取り書き込み混合)。
スタンドアロン時代では、ストレージ用に MySQL をインストールするのに 1 台のマシンだけが使用されます。毎回何千ものデータが保存されると、MySQL のパフォーマンスが低下し、ストレージと読み取りの速度が低下します。非常に遅いですが、その後、キャッシュ mysql の垂直分割の方法に進化します。
キャッシュは、中間キャッシュ時代として、データベースの負荷を軽減し、効率を向上させるために、最初にすべてのデータをキャッシュに保存してから、それを mysql に保存します。
しかし、データが再び大きくなると、上記の方法では需要を満たすことができなくなり、データベースの書き込み圧力が増加するため、キャッシュはデータベースの読み取り圧力を軽減することしかできません。 1 つのデータベースに読み取りと書き込みが集中すると、データベースに負荷がかかります。ほとんどの Web サイトでは、読み取りと書き込みのパフォーマンスと読み取りデータベースのスケーラビリティを向上させるために、読み取りと書き込みを分離するためにマスター/スレーブ レプリケーション テクノロジを使用し始めています。 Mysql のマスター/スレーブ モードは、現時点では Web サイトの標準になっています。
Redis キャッシュ、MySQL マスター スレーブ レプリケーション、読み書き分離に基づくマスター スレーブ分離モードの時代では、MySQL メイン データベースの書き込み圧力がボトルネックになり始め、データ量が増加しました。 MyISAM はテーブル ロックを使用しているため、同時実行性が高いと深刻なロックの問題が発生する可能性があり、多数の同時実行性の高い MySQL アプリケーションが MyISAM の代わりに InnoDB エンジンを使用し始めています。 Nosql データベースの利点:
1. 拡張が簡単
これらのタイプのデータ ストレージは固定モデルを必要とせず、冗長な操作を行わずに水平方向に拡張できます。リレーショナル データベースと比較して、テーブルとフィールドの数を減らすことができます。また、アーキテクチャ レベルでのスケーラブルな機能ももたらします
2. 大量のデータによりパフォーマンスが向上します
3. 多様で柔軟なデータ モデル
以上がWeb プロジェクトで Redis を導入する必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。