缓存
缓存的基本思想
- 空间换时间
单独开辟一块高速独立的地区存放数据,以便高效访问
- 时间局限性原理
同一时间段一件事情可能被同时多次使用
- 性能成本Tradeoff
缓存的优势
1、提升访问性能
2、降低网络拥堵
3、减轻服务负载
4、增加可扩展性
缓存读写模式
cache aside (旁路缓存)
对于写:首先检查缓存中是否有key,如果有key,那么删除,在更新数据库,数据库驱动缓存更新
对于读:首先读cache,若cache中没有数据,则读取数据库,在更新到cache中
特点:
业务端可以处理所有的数据访问细节,同时采用lazy计算的思想,更新数据库后删除缓存中信息,会大大减少数据库与缓存中信息不一致的问题
适用于:
对数据一致性要求较高 or 或者缓存更新数据业务比较复杂
lazy计算:对于一个事物,再不需要的时候不计算,在需要的时候才计算
read/write through (读写穿透)
对于写:首先检查缓存中是否存在,若存在先更新缓存再更新DB,两个都更新完成后才会返回数据,若不存在直接更新DB
对于读:先读取缓存,若命中,则返回,若缓存不存在则读取DB
特点:
存储服务封存了所有数据处理细节,系统隔离型更佳,在进行写操作的时候,cache中有数据才更新,无数据不更新,内存利用率更高一点
适用于:
数据有冷热之分
write behind caching (异步缓存写入)
对于写:首先检查缓存中是否存在,若存在先更新缓存就返回,缓存服务异步更新DB,若不存在直接更新DB
对于读:先读取缓存,若命中,则返回,若缓存不存在则读取DB
特点:
数据存储的写性能更加提高,适合一些变更频繁的业务,但数据的一致性较差
适用于:
变更频率很高,但对数据一致性要求不太高的业务,减少DB压力