数据库是 MySQL,Redis 主要用来读缓存,现需要检测数据和缓存之间的一致性,确保从缓存读取的数据是最新的。该怎么确保这一点呢?
怪我咯2017-04-22 08:58:29
1. クエリ時など、モデルをインスタンス化するときに、テーブル内の総レコード数、最終変更時刻、その他の情報をモデルのメソッドに保存できます
2. データをクエリする際、クエリ条件とテーブル情報を組み合わせてキャッシュキーを計算し、キャッシュに書き込みます
3. キャッシュを取得する際、クエリ条件とテーブル情報を組み合わせてキャッシュキーを計算し、キャッシュにクエリを実行します。テーブルデータが変更されてキャッシュがヒットしない場合は、最新の結果を取得して新しいキーとして保存します
実際の開発では、MVC フレームワークが使用され、モデルの CUD 操作中に、データの一貫性を確保するために、モデルに関連付けられたすべてのキャッシュ キーが自動的に削除されます。
これには、フレームワークの使用に比較的高い基準が必要であり、モデル キャッシュ仕様に従ってキャッシュを登録する必要があります。
現時点での典型的なアプリケーションは、CRUD 後にリストのキャッシュされたデータを更新する方法です。
怪我咯2017-04-22 08:58:29
キャッシュを確認し、そうでない場合は、データベース内のデータをキャッシュにダンプします。
データの更新があり、データの整合性がそれほど高くない場合は、キャッシュ内のデータに ttl を与えるだけで、データの整合性が非常に高い場合は、データの更新時にキャッシュをクリアします。
伊谢尔伦2017-04-22 08:58:29
バージョン情報を表すフィールドを各キーに追加できます。更新されたデータのバージョン番号を更新します。Redis をクエリするときにキーとバージョン番号を使用します。