分布式架构中读和写都有其考虑:
读:先读cache缓存,没有读到就读取从数据库,然后set进入缓存。
这个流程是公认的没有异议
写:有两种考虑方法,两者都有其缺陷
1.先del缓存,后update数据库,缺点是在读写并发时会导致最终数据不一致问题。
为什么使用del,而不是set,害怕操作缓存成功,操作数据库失败,造成数据不一致。如果使用set,把缓存中的数据更改成功,数据库更改失败,缓存和数据库的数据就不一致。如果使用del,就算缓存执行成功,数据失败。读取的时候也只是,一次cache miss,然后读取数据库。
2. 先写数据库,再删除缓存,有原子性问题,操作数据库成功,操作数据库失败时,会有数据不一致