对于紧邻数据库的场景,则需要严肃考虑缓存淘汰机制。一般我缓存的目标会是一个领域对象,而不是简单的数据库的一行。更新领域对象时,会先更新数据库,然后清理缓存。但这种处理方式仍然没法严格保证最终一致性,一般解决方式有三种,a. 设置缓存有效期 b. 用一个延时队列再清理一次缓存 c. 使用分布式事务锁。考虑到 b/c 两种方式成本高,普通场景下用a的比较多。这种方式对多中心的设计也比较友好,当多中心数据库同步时,只需要对同步的每一个Entity都清理对应的缓存的即可。对于紧邻数据库的列表型缓存,一般也有两种处理手法,一种是短缓存周期存储全部内容;另一种是中缓存周期,但只保存ID。