应用背景
在实际的开发当中,我们经常需要进行磁盘数据的读取和搜索,因此经常会有出现从数据库读取数据的场景出现。但是当数据访问量次数增大的时候,过多的磁盘读取可能会最终成为整个系统的性能瓶颈,甚至是压垮整个数据库,导致系统卡死等严重问题。
常规的应用系统中,我们通常会在需要的时候对数据库进行查找,因此系统的大致结构如下所示:
当数据量较高的时候,需要减少对于数据库里面的磁盘读写操作,因此通常都会选择在业务系统和MySQL数据库之间加入一层缓存从而减少对数据库方面的访问压力。
但是很多时候,缓存在实际项目中的应用并非这么简单。下边我们来通过几个比较经典的几个缓存应用场景来列举一些问题:
1.缓存和数据库之间数据一致性问题
常用于缓存处理的机制我总结为了以下几种:
Cache Aside, Read Through, Write Through, Write Behind Caching
Cache Aside模式
这种模式处理缓存通常都是先从数据库缓存查询,如果缓存没有命中则从数据库中进行查找。 这里面会发生的三种情况如下:
<