阿里巴巴开源了MySQL数据库binlog的增量订阅和消费组件 - canal。
我们可以采用API服务器只写入数据库,而另一个线程订阅数据库 binlog 增量进行缓存更新的策略。
这种策略存在和先更新数据库后删除缓存类似的并发问题:
时间读线程写线程异步线程数据库缓存1 缓存失效 v1 null
2 从数据库读取v1 v1 null
3 更新数据库为v2 v2 null
4 删除缓存/更新缓存 v2 null
5 写入缓存 v2 v1
这个问题同样可以采用异步线程更新缓存,且写入缓存时比较数据版本的方法来解决。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx