对于读多写少的少量数据的缓存优化
前提:数据量比较少,并且读多写少,实时性要求不高的数据。
优点
- 访问本地cache节省了网络开销,减少中心cache集群(redis)的压力
- 正常的web机器内存利用率较低,减少web机内存资源的浪费
类库的选择
google guava cache
- LRU失效机制
- 流畅的api接口
- 使用内存缓存
- 配套stats接口
流程
- [被动失效] controller层访问cache,若获取不到数据,从db中获取数据,并刷到cache
- [主动失效] 当db数据变更时,主动失效缓存;注意:这里cache是在每台web机器都有一份,所以每台机器都需要刷一遍;所以我们需要一个配置中心;在web机器监听配置中心的变化,然后刷新各自机器的cache
- 定时将本机的cache的 命中率,量 上报到监控系统
主动失效机制
- 实时性要求较高的可以订阅mysql的binlog
- 实时性要求不高的可以定时跑crontab