redisをキャッシュとして使用して、アプリケーションの呼び出しプロセスの開始と終了を理解することができません。アプリケーションがSQLなどのDBを持っていて、キャッシュにredisを使用しているとします。そのプロセスのタイミングはどのように動作しますか?私の理解によれば、redisはSQL DBを呼び出してデータとUI呼び出しを呼び出し、そのデータを直接redisから消費し、SQL DBへの呼び出しを制限します。通常、redisはデータを取得するためにDBへの呼び出しを行いますか?それはSQL DBとどのように同期していますか?私はこの高水準を理解しようとしています。ありがとうございました!Redisキャッシュと全体的なプロセス
答えて
私はRedisがSQL DBを呼び出すというシナリオに遭遇したことはありません。 Redisは独自のデータをRAMに保存するキーバリューストアなので、通常はアプリでキャッシュするために直接使用されます。これらのケースでは、SQL DBの関与は全くありません。
Redisの最大の強みは、格納される要素の数に関係なく、一定の時間内に多くの操作がデータを返すことです。これは、非常に迅速な応答時間を必要とするキャッシングおよびロック機構のような多くのユースケースでは優れています。
Redisは単なるキャッシュであり、高速データストアを提供しますが、データベースはより低速ですが信頼性が高く、より多くの機能を備えています。アプリケーションは、Redisからデータを取得する必要があります。見つからない場合は、適切な有効期限と無効化の仕組みを使用してデータベースから取得し、Redisに追加します。
簡単な例を見て行きましょう。 PythonでRedisを使ってユーザオブジェクトをキャッシュする仮説的なアプリケーションを考えてみましょう。ユーザーオブジェクトは、Hashデータ型のキーuser:{id}
でRedisにキャッシュされます。ユーザーデータの記録システムは、リレーショナルデータベースに格納されます。 Idは整数で、pkはdbで生成されます。
# r = redis.StrictRedis(hostname)
def get_user(r, id):
key = "user:{}".format(id)
user = r.hgetall(key)
if user is None:
return fetch_user_from_db(id)
else:
return user
私たちはのようなコードを実行しますユーザーを書くために:
# r = redis.StrictRedis(hostname)
def update_user(r, user):
key = "user:{}".format(user['id'])
r.delete(key)
write_user_to_db(user)
この簡単な例は、詳細の多くを残し、我々はこのようなコードの何かを実行するだろうユーザーをフェッチするために
分散環境でキャッシュとdbの一貫性を維持することですが、単一のノードではこれが基本的なプロセスです。あなたのアプリはキャッシュの詳細を処理し、キャッシュヒットをチェックし、書き込み時に無効にする必要があります。
- 1. Redis DECRのキーグループ全体
- 2. 全体的なクライアントサイドコンポーネント
- 3. OutputCacheとRenderActionのキャッシュ全体のページ
- 4. ファセットの全体的なラベル
- 5. 全体的なロールアッププロセス[RB.1.5]
- 6. redisキャッシュのタイムアウトエラー
- 7. アプリのキャッシュ全体をクリアする
- 8. 春のRedisキャッシュは
- 9. Moq Redisキャッシュのユニットテスト
- 10. subsonicproject activerecordをキャッシュするとオブジェクト全体のグラフがキャッシュされます
- 11. サービスワーカーはページ全体をキャッシュしないでください
- 12. 全体的な明るさ/ガンマ?
- 13. ノードjs - プログラムの全体的な構造
- 14. 全体的なコミットを得るGithub API
- 15. WordpressのW3TotalキャッシュとRedisのフェイルオーバー
- 16. 挿入トリガーがテーブルとプロセス全体をブロックした後
- 17. eclipselinkのキャッシュ全体を定期的にリフレッシュまたは無効にします。
- 18. Infinispan実行時に動的にキャッシュ全体の寿命を設定する
- 19. redisキャッシュに一括設定
- 20. Redisのキャッシュ - アクセスHMSET Redisson
- 21. redisキャッシュを並べ替え
- 22. Cassandra Row Cache対Redisキャッシュ
- 23. アズール:テーブルストレージ対RedisのWebキャッシュ
- 24. ファイルキャッシュ上のYii2 redisキャッシュ
- 25. 動的サイト全体をダウンロード
- 26. プロセス全体を殺すことなく、C内でpthreadを終了
- 27. (Redis)クライアント全体を簡単にラップする方法
- 28. 2x2テーブルの頻度とSAS - procテーブルの全体的なパーセンテージ?
- 29. キャッシュが複数のプロセス(Redis)からアクセスされているときにスレッドの安全性が必要なのでしょうか?
- 30. Azure Redisキャッシュ動的アプリケーション名またはキー名
大規模なアプリケーションを処理するためには、通常、いくつのインスタンスが必要ですか? – CW1
"文字列の長さはどれくらいですか?"私はそれに答えるのに十分な情報がほとんどないので、それは問題ではありません。これは、「大規模な」アプリケーションの意味、実行する内容、Redisインスタンスで使用可能なデータ量、頻度、およびリソースによって異なります。 – Adrian