先删除缓存,再更新数据库:如果删除缓存失败了,那么会导致数据库中是新数据,缓存中是旧数据,数据就出现了不一致。2 个线程要并发「读写」数据,可能会发生以下场景:
先更新数据库,再删除缓存:先删除了缓存,然后要去修改数据库,此时还没修改。一个请求过来,去读缓存,发现缓存空了,去查询数据库,查到了修改前的旧数据,并将其放到了缓存中。随后数据变更的程序完成了数据库的修改。数据库和缓存中的数据不一样了
矮个子里选将军第二种方法其实概率很低,这是因为它必须满足 3 个条件:
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |