代わりに/ SQLデータベースのサイドに沿ってRedisなどのキー/値ストアを使用するのはいつですか?


166

Redisなどのキー/バリューストアの優れた点を読みましたが、アプリケーションで使用するタイミングがわかりません。

私がWebベースのアプリケーションを設計しているとしましょう。フロントエンド、バックエンド、データベースなどに使用するスタックを知っています。「ああ、X、Y、またはZのRedisも必要になる」というシナリオはありますか。

node.jsの例と非node.jsの例をいただければ幸いです。


回答:


102

アプリケーションでいつ使用するべきかわからないようです。

ユースケースも含まれているこのチュートリアルを読むことをお勧めします。redisはむしろメモリ指向であるため、セッションストア、状態データベース、統計、キャッシングなどの頻繁に更新されるリアルタイムデータに最適であり、その高度なデータ構造は他の多くのシナリオに汎用性を提供します。

ただし、Redisは、データを遅くする可能性のあるデータのクエリなど、RDBMSの世界の多くの標準機能をサポートしていないため、従来のリレーショナルデータベースのNoSQLの代替品ではありません。置き換えは、MongoDBやCouchDBのようなドキュメントデータベースであり、redisは、速度と高度なデータ構造のサポートが役立つ特定の機能を補完するのに優れています。


3
あなたがリンクしたチュートリアルは素晴らしいです!
Chris Abrams

5
私はそのチュートリアルサイトのURLで簡単なGoogle検索を行い、これをトップヒットとして見つけました-slideshare.net/dvirsky/introduction-to-redis-version-2
Paul

66

この記事ほど、Redisのユースケースを説明するものはないと思います:http : //antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html

きっとあなたはアハがあるでしょう瞬間。;)

以前の読者からの引用:

私は以前にRedisについて読んで、企業がそれをどのように使用しているかを聞いたことがありますが、その目的を完全には理解していません。これを読んだ後、実際にRedisを理解し、それがどのように役立つかを実際に理解できます。それについて多くを聞いた後、それがとったすべてが比較的単純な記事であったことは驚くべきことです。

記事からの引用:

Redisは他のデータベースソリューションとは多くの点で異なります。主記憶装置のサポートとしてメモリを使用し、永続化のためにのみディスクを使用します。データモデルはかなりユニークで、シングルスレッドなどです。もう1つの大きな違いは、本番環境でRedisを利用するためにRedisに切り替える必要がないことだと思います。以前は不可能だった新しいことをしたり、古い問題を修正したりするために使用できます。

記事が触れているユースケース:

  • ホームページの最新のアイテム一覧が遅い
  • リーダーボードと関連する問題
  • ユーザーの投票と時間順に並べ替え
  • アイテムの期限切れを実装する
  • ものを数える
  • 一定の時間内に一意のN個のアイテム
  • 統計情報、スパム対策など、何が起こっているかをリアルタイムで分析
  • Pub / Sub
  • キュー
  • キャッシング

この記事では、私が知りたいと思ったものを持っている、非常に便利です
ホーズマーキュリーの

@ Zenw0lf redisはまだ単純なキャッシングに最適ですか?あなたの投稿は2011年のものなので、他に何か使用すべきかどうかわかりません。
Moondra 2018年

@Moondraはい、プロジェクトはまだ非常に活発で、作成者は頻繁にリリースしています。それはまださまざまな使用シナリオのための素晴らしいプロジェクトです!
zenw0lf 2018年

@ zenw0lf良い記事ですが、いくつかのユースケースではまだ混乱しています。たとえば、「最新のアイテム」の使用例ですが、この場合はなぜRedisを追加した方がよいのですか?データベースの内容を特定のテーブルに追加して、ユーザーID、コメント(ID)、タイムスタンプ、またはその両方を取得し、これを直接使用します。これは同じではないですか?
Tony Lin

1
@TonyLinそれは両方とも、インメモリであるため高速であり、Redisには最先端のデータモデルのかなり優れた実装があり、最大限に機能するために役立ちます。
zenw0lf

9
  • リアルタイムプロジェクトでredisを使用したいです。私は最近、以前にデータベースとしてmysqlに構築されていた1つのgps追跡システムを実行しました。

    利点

    1. トラッカーがデータをブロードキャストするたびに、mysql接続を開いて保存する必要はありません。これをredisに保存し、後で他のプロセスを使用してmysqlに移行できます。これにより、複数のトラッカーからmysqlへの同時接続が回避されます。
    2. これらのすべてのgpsデータを公開でき、他のクライアント(javascript / android)は、redisに基づくメッセージキューを使用してリアルタイムでサブスクライブできます
    3. リアルタイムのアラートをトリガーできます

3

手元にないのは、Redisはリレーショナルデータベースではないということです。SQL "JOIN"が必要になる場合は、Redisや他の非リレーショナルデータベースを使用する必要はありません。Redisはほとんどのリレーショナルデータベースよりも高速です。キーと値のペアのクエリのみを実行する場合は、Redisを使用する必要があります。


たとえば、ユーザーセッションに関する情報にredisを使用すると、名前、電子メール、IDなどにすばやくアクセスできるようになりますか?
Chris Abrams

そう思います。京都内閣のほうがもっと早いと思います。
EhevuTov
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.