大家都使用缓存,很多时候用错了缓存。典型误用缓存的业务场景。
- 把缓存作为服务与服务之间传递数据的媒介。服务与服务之间传递数据是数据管道的场景,使用 mq 比缓存更加合适。多个服务间通过缓存传递数据会导致服务间的耦合。
- 使用缓存未考虑雪崩。当缓存挂掉,所有请求都会连接到数据库,如果没有做容量预估,很容易导致数据库雪崩。如何应对雪崩?常见方案有缓存高可用和缓存水平切分。缓存实施了高可用,当主挂掉,还有备的顶上,不会导致雪崩。缓存水平切分后,一个缓存挂掉,不会让所有流量都导致数据库。
- 调用缓存数据。调用缓存数据需要关注数据获取的复杂性。更严重的是当服务修改了数据,淘汰关联缓存后,很难通知服务方内的缓存。从而导致缓存数据不一致。
- 多服务共用缓存。该方案可能导致 key 冲突,彼此冲掉对方的数据。不同的服务时间缓存的数据不同,一个服务很容易把另一个服务的热数据挤出去。