是用代码分别更新到redis和postgresql数据库(谁先谁后)还是只更新到redis,然后通过队列异步更新到数据库?如果有详细的做法更好,谢谢!PS:有人谁用过redis-fdw吗?
ringa_lee
Redis とデータベースが同時に更新される場合、それは実際にはキャッシュ更新戦略の問題です。私の意見を述べさせてください。それを出発点として考えてみましょう: このタイプの問題には、一般的に 2 つの戦略が使用されます: 1. キャッシュへの書き込み時に更新: DB への書き込みが正常に完了した後にキャッシュが更新されることを意味します。この戦略により浸透率は低下しますが、データの不整合が容易に発生する可能性があります。 2. キャッシュの読み取り時に更新: これは、DB への書き込みが正常に完了した後にのみキャッシュが削除され、読み取りが必要なときにキャッシュが再構築されることを意味します。この戦略の一貫性は保証できますが、浸透度が高く、DB に圧力がかかりやすいです。
(調べてみるとキャッシュ更新モードはたくさんあることが分かりました。上記の2つは私が知っているだけです 1.ライトスルー すぐに書き込みます 2.ライトビハインド 最初にキャッシュを書き込み、書き込みイベントをキューに入れてからデータベースに書き込みます 3. エビクション ポリシー キャッシュ更新ポリシーは、キャッシュ内のデータを直接削除し、次回の読み取り時に更新されるのを待ちます。 4. レプリケーション 5. ピアツーピア (P2P) )
Redis のみを更新し、それをデータベースに非同期的に更新する場合、キャッシュがダウンした後にデータを再構築するのは困難になります。データが厳密に正確である必要はないが、迅速にアクセスする必要がある場合は、プレイすることを検討してください。ページ訪問者数などをこのようにして記録します。
redis-fdw は一度も使用されていません。
Redis とデータベースが同時に更新される場合、それは実際にはキャッシュ更新戦略の問題です。私の意見を述べさせてください。それを出発点として考えてみましょう:
このタイプの問題には、一般的に 2 つの戦略が使用されます:
1. キャッシュへの書き込み時に更新: DB への書き込みが正常に完了した後にキャッシュが更新されることを意味します。この戦略により浸透率は低下しますが、データの不整合が容易に発生する可能性があります。
2. キャッシュの読み取り時に更新: これは、DB への書き込みが正常に完了した後にのみキャッシュが削除され、読み取りが必要なときにキャッシュが再構築されることを意味します。この戦略の一貫性は保証できますが、浸透度が高く、DB に圧力がかかりやすいです。
(調べてみるとキャッシュ更新モードはたくさんあることが分かりました。上記の2つは私が知っているだけです
1.ライトスルー すぐに書き込みます
2.ライトビハインド 最初にキャッシュを書き込み、書き込みイベントをキューに入れてからデータベースに書き込みます
3. エビクション ポリシー キャッシュ更新ポリシーは、キャッシュ内のデータを直接削除し、次回の読み取り時に更新されるのを待ちます。
4. レプリケーション
5. ピアツーピア (P2P)
)
Redis のみを更新し、それをデータベースに非同期的に更新する場合、キャッシュがダウンした後にデータを再構築するのは困難になります。データが厳密に正確である必要はないが、迅速にアクセスする必要がある場合は、プレイすることを検討してください。ページ訪問者数などをこのようにして記録します。
redis-fdw は一度も使用されていません。