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