对于高并发的系统,所有的请求都打在数据库上是不明智的选择。一般的做法是通过缓存来缓解数据库的压力。缓存是用于解决高并发场景下系统的性能及稳定性问题的银弹。最主要的就是要考虑到缓存的穿透性和数据一致性问题。
先来看一个示例:
这是一个简单应用缓存的示例,存在以下几个问题:
1:高并发的情况下,大部分请求会直接访问数据库。多线程的情况下,缓存还没及时写入,就会有大部分请求直接访问数据库。
2:业务逻辑与缓存之间解耦性太高。
先来解决第一个问题。就是利用锁的机制。但是要考虑加锁的地方,加的不对会导致性能问题,比如不能加到整个方法上。
接下来解决第二个问题,这就是解耦问题,让别的人也可以轻松使用这个缓存方法。那就是使用模板设计模式,做一个缓存模板。