缓存-db的这套模式,在读数据时,需要考虑一个问题:
如果一个数据不存在,还要加载进缓存吗?比如说一个redis的key。
如果不加载,那么每次读取这个数据时都会落到db里;如果某一个维度是刚加的,那么可能导致大量缓存穿透,db被打满。比如用户是千万级别,这时加了一个用户级别的数据,最开始每一个用户都没有,需要业务逻辑跑起来慢慢加。但是读接口会一直访问这份数据。
所以,如果qps很高,没有数据,最好是将一个空值放入缓存,防止db被打满。
缓存-db的这套模式,在读数据时,需要考虑一个问题:
如果一个数据不存在,还要加载进缓存吗?比如说一个redis的key。
如果不加载,那么每次读取这个数据时都会落到db里;如果某一个维度是刚加的,那么可能导致大量缓存穿透,db被打满。比如用户是千万级别,这时加了一个用户级别的数据,最开始每一个用户都没有,需要业务逻辑跑起来慢慢加。但是读接口会一直访问这份数据。
所以,如果qps很高,没有数据,最好是将一个空值放入缓存,防止db被打满。