回答編集履歴

1

トランザクション失敗時の挙動について追記

2017/07/30 13:36

投稿

miyahan
miyahan

スコア3095

test CHANGED
@@ -10,4 +10,4 @@
10
10
 
11
11
 
12
12
 
13
- また基本的にキャッシュサーバーは競合を防ぐ仕組みを持ちません(だから速いんです)マスターデータは RDBMS (MySQL, PostgreSQL など)にあると思いますので RDBMS のロック機能を使わせてもらえばよいと思います。具体的にはキャッシュミス時のロード時書き換え時に排他ロックをかけてマスターデータの読み書きを行いつつ、その間にキャッシュサーバーのデータを更新するようにすれば競合が回避できます。
13
+ またキャッシュサーバーは基本的に更新の競合を防ぐ仕組みを持ちません(だから速いんです)マスターデータは RDBMS (MySQL, PostgreSQL など)にあると思いますので RDBMS のロック機能を使わせてもらえばよいと思います。具体的にはキャッシュミス時や更新時に排他ロックをかけてマスターデータの読み書きを行いつつ、その間にキャッシュサーバーのデータを更新するようにすれば競合が回避できます。ただ万が一トランザクションが失敗してロールバックが走ると、マスターデータは前のままでキャッシュは失敗したデータと不整合が起きます。更新がガシガシ走るようなパラメーターはそもそもキャッシュの効果は薄いですし、本当にキャッシュが必要なのか慎重に検討すべきだと思います。