私はRedisを見てきました。とても面白そうです。しかし、実用的な観点から、どのような場合にMySQLよりもRedisを使用したほうが良いでしょうか?
NoSQLとSQLの議論全体を無視すると、最善のアプローチはそれらを組み合わせることです。つまり、システムの一部(複雑な検索、トランザクション)にはMySQLを使用し、その他(パフォーマンス、カウンターなど)にはredisを使用します。
私の経験では、スケーラビリティ(多くのユーザー...)に関連するパフォーマンスの問題により、最終的に何らかの種類のキャッシュを追加してMySQLサーバーから負荷を取り除くことを余儀なくされ、redis/memcachedは非常に優れています。
私はRedisの専門家ではありませんが、私が集めたものから、両者はかなり異なっています。 Redis:
MySQLが提供するリレーショナル構造を必要とせず、高速アクセスを必要とする少量のデータがある場合に、Redisを使用することをお勧めします。これは、たとえば、頻繁かつ高速にアクセスする必要がある動的なWebインターフェイスのセッションデータである可能性があります。
Redisは、非常に頻繁にアクセスされる(つまり、ユーザーがログインしたときにロードする)MySQLデータのキャッシュとしても使用できます。
あなたは間違った方法で質問をしていると思う、どのアプリケーションがシステムに適しているのではなく、どちらがアプリケーションに適しているかを自問するべきです;)
MySQLはリレーショナルデータストアです。構成されている場合(たとえば innodb テーブルを使用)、MySQLは reliable データストアオファリング [〜#〜] acid [〜#〜] トランザクション。
RedisはNoSQLデータベースです。速度と信頼性を犠牲にしているため、(正しく使用した場合)より高速です(パフォーマンスを劇的に低下させるためfsyncで実行することはまれです)およびトランザクション(- [〜#〜] setnx [〜#〜])で近似できます。
Redisには、セット、リスト、ソート済みリストなど、非常に優れた機能がいくつかあります 。
Redisのこれらのスライド 統計の収集とセッション管理を例としてリストします。例としてredisで書かれたTwitter clone もありますが、それはTwitterがredisを使用することを意味するものではありません( Twitter use 重いmemcacheキャッシュを備えたMySQL)。
MySql-
1)構造化データ2)ACID 3)大量のトランザクションとルックアップ。
Redis-
1)非構造化データ2)シンプルで迅速な検索。たとえば-セッションのトークン3)キャッシュレイヤーに使用します。
Redis、SQL(+ NoSQL)には利点と欠点があり、多くの場合、並んで機能します。
(異なるSQL/NoSQLソリューションは異なる場合があります。1つのシステムが同時にすべてを提供できない理由については、「CAP定理」と「ACID(コンピューターサイエンス)」をお読みください)
公式ウェブサイトによると、Redisはオープンソース(BSDライセンス)のインメモリデータ構造ストアであり、データベース、キャッシュ、メッセージブローカーとして使用されます。実際、Redisは高度なキーと値のストアです。毎秒約110000セット、毎秒約81000 GETを実行できるため、文字通り非常に高速で、驚くほど高いスループットを実現します。また、格納するデータタイプの非常に豊富なセットをサポートします。実際、Redisは毎回データをメモリ内に保持しますが、ディスク上の永続的なデータベースも保持しています。そのため、トレードオフがあります:データセットのサイズ制限(メモリごと)による驚異的な速度。この記事では、MySQLと比較してベンチマークを得るために、キャッシュエンジンとしてのみRedisを使用します。
ここを読む: Redis vs MySQL Benchmarks