web-dev-qa-db-ja.com

SQL ServerのキャッシュとしてRedisをどのように使用する必要がありますか?

関係のない問題のためにSQLServerからリアルタイムで抜け出すには遅すぎることが証明されている表形式のデータがいくつかあります。ユーザーが増えるにつれて、これは悪化するだけなので、ユーザーの表形式のページング可能なデータを格納するためのフロントエンドキャッシュとしてRedisを使用することを考えています。

このデータは約10分後に古くなる可能性があります。その後、レコードを再度設定してRedisに入れたいと思います。

このアプリは.NETMVCアプリです。ユーザーがアプリにログインすると、このデータがデータベースから取り出され(約10秒かかります)、MVCクライアントで使用できるようにRedisに入れられると思っていました。そのデータに有効期限を設定し、データが古くなると、SQLServerデータベースから再フェッチされます。

これはすべて合理的に聞こえますか?私はそれを少し怖がっています:

  1. データがRedisに保存される前に、ユーザーがページにアクセスする可能性があります
  2. Redisがダウンするか応答しない場合は、Redisが存在しなくても、SQLSERverからViewModelが直接入力されるようにする必要があります。
15
Victoria

サービススタックredisの実装に行きます ここ 必要なすべての詳細です。他のnosqlと比較して、キャッシュを実行する場合、Redisは特に優れています。ただし、読み取りと書き込みのアプリケーションが多い場合は、SQLサーバーと組み合わせたデータベースとしてnosqlデータベースをチェックアウトすることをお勧めします。これは、スケーラビリティの場合に役立ちます。

さらに詳細が必要な場合はお知らせください。 nugetコマンドを起動するだけで、ほぼ稼働しています。

3
kunjee

MemcacheDのようなものを使用して、キャッシュされたページをメモリに保存できます。

キャッシュされたオブジェクトに10分の有効性を設定できます。その後、キャッシュは自動的にオブジェクトを削除します。

実際のリポジトリでは、次の手順を実行する必要があります。
1。必要なデータがないかキャッシュを確認します。キャッシュがある場合は、それを活用してください。
2。キャッシュされたデータが存在しない場合は、SQLサーバーに移動してデータを取得します
3。 SQLサーバーから返されたデータでキャッシュを更新します

私は以前にEnyimクライアントを使用しました。それは素晴らしい働きをします。 https://github.com/enyim/EnyimMemcached

また、Quartzのようなものを使用して、キャッシュを準備するためのバックグラウンドタスクをスケジュールすることもできます。 http://quartznet.sourceforge.net/

1
Jeremy Bell