先更新数据库,再删除缓存
假设两个线程同时更新同一个数据,线程A先完成第一步,线程B先完成第二步怎么办?
线程A把值更新成a,线程B把值更新成b,此时数据库中的最新值是b,因为线程A先完成了第一步,所以第二步谁先完成已经不重要了,因为都是直接删除缓存数据。
假设第一步成功,第二步失败了怎么办?
此时一般采取的做法是重试机制。
虽然这个组合方案不完美,但出现一致性问题的概率较低。
假设两个线程同时更新同一个数据,线程A先完成第一步,线程B先完成第二步怎么办?
线程A把值更新成a,线程B把值更新成b,此时数据库中的最新值是b,因为线程A先完成了第一步,所以第二步谁先完成已经不重要了,因为都是直接删除缓存数据。
假设第一步成功,第二步失败了怎么办?
此时一般采取的做法是重试机制。
虽然这个组合方案不完美,但出现一致性问题的概率较低。