缓存一致性问题
缓存读
缓存更新
缓存并发问题
缓存系统存在根本的问题是缓存的读写和数据库读写不是原子的, 因此它必然会出现并发的问题.
缓存并发解决思路
引入全局锁
例如Redis
就有锁机制, 通过redis
实现全局锁(行锁), 更新的时候设置排它锁, 不允许读取操作即可.
这就和数据库之中的悲观锁
是一个性质的, 这种系统最大的问题就是吞吐量限制, 每次必须查询锁的状态
引入消息队列
或者使用乐观锁
的实现方式, 就是引入消息队列, 消息队列相对于全局锁的优势在于:
- 可以合并一部分的更新操作, 例如2次更新之间没有任何读取, 就可以将更新合并
- 可以和流控系统结合, 消息队列可以用于请求的流控, 通过流控系统可以实现缓存读取的分布式化
缺点就是, 系统架构越来越复杂了, 流控系统的可靠性成为系统的关键.
0%