2016-04-14 5 views
0

MySQLの一時テーブルは、コンピュータに十分なRAMがあり(それに応じてMySQLが設定されている限り)、メモリに格納されます。任意のフィールドのインデックスを作成できます。MySQLの一時テーブルがあるときにRedisを使用するのはなぜですか?

Redisは、データを1つのキーでインデックスされたメモリに格納しています。私の理解では、MySQLもこの作業を実行できます。

大量(100〜200k行)の揮発性データを格納するためにRedisを改善するものはありますか?私はRedisの外観を説明できるのは、すべてのプロジェクトがmysqlを内部に持っているわけではなく、おそらく他のデータベースが一時テーブルをサポートしていないということだけです。

私のプロジェクトに既にMySqlがある場合は、Redisを実装することは理にかなっていますか?

+0

速度要件によって異なります。レディスはおそらく適度なマージンで速くなるでしょう。 –

+0

これは、データ構造とリレーショナルデータベースのための非常に便利なキー値ストアです。テーブルには依然として、クエリ、解釈、ストレージエンジン、およびテーブルのインデックス値の書き込みと読み取りに添付されたすべてが必要です。 Redisはキーストアであり、キーは既知の値からハッシュまでの何でもかまいません。クエリを適用せずに、想定されたキーで値を直接要求できます。ルックアップはまだ発生しますが、MySqlと同じ意味ではありません。私は、大規模なアプリケーションのためにセッションを保存し、Webサーバーやデータベースの多くのインスタンスにキャッシュするためにredisを使用しました。 –

答えて

2

Redisはインデックスを直接操作するようなものです。 ACID、SQLパーサーなど、あなたとそのデータの間には何もありません。

いくつかの基本的なデータ構造を提供しています。これらは、メモリに保持されるように特に最適化されており、それらを読み込んで変更する特定の操作もあります。

一方では、Redisのはクエリデータに設計されていません(ただし、SORTSCAN、交差点や他の操作と非常に強力かつ高パフォーマンスのフィルタを実装することができます)ができますように、データを格納します後で消費されるだろう。たとえば、3つの異なる基準でソートされた顧客を取得したい場合は、3種類の異なるソートセットを入力する必要があります。他のデータ構造には多くのユースケースがありますが、私は答えで本を書くことになります。

また、レディスの最も強力な機能の1つは、 3.0バージョンでは、すぐに使えるデータシャーディングをサポートしています。

なぜMySQL(と他のエンジンも)の一時テーブルの代わりにRedisを使用する必要があるのはあなた次第です。ケースを調べ、RedisのようなNoSQLストレージ内のデータをキャッシュまたは格納することが実際のアプローチより優れているかどうかを確認し、より洗練されたデータアーキテクチャを提供する必要があるかどうかを確認する必要があります。

0

他のデータベースと並んでRedisを使用することで、Redisの負荷を効果的に軽減できます。また、Redisが別のサーバー上で実行されている場合、各階層で独立してスケーリングを実行できます。

関連する問題