天道酬勤,学无止境

微服务复杂查询

微服务复杂查询之缓存策略

在上一篇 缓存设计的好,服务基本不会倒 介绍了db层缓存,回顾一下,db层缓存主要设计可以总结为:缓存只删除不更新行记录始终只存储一份,即主键对应行记录唯一索引仅缓存主键值,不直接缓存行记录(参考mysql索引思想)防缓存穿透设计,默认一分钟,防止缓存击穿和雪崩不缓存多行记录前言在大型业务系统中,通过对持久层添加缓存,对于大多数单行记录查询,相信缓存能够帮持久层减轻很大的访问压力,但在实际业务中,数据读取不仅仅只是单行记录,面对大量多行记录的查询,这对持久层也会造成不小的访问压力,除此之外,像秒杀系统、选课系统这种高并发的场景,单纯靠持久层的缓存是不现实的,本文我们来介绍 go-zero 实践中的缓存设计之biz cache。适用场景举例选课系统内容社交系统秒杀像这些系统,我们可以在业务层再增加一层缓存来存储系统中的关键信息,如选课系统中学生选课信息,课程剩余名额;内容社交系统中某一段时间之间的内容信息等。接下来,我们以内容社交系统来进行举例说明。在内容社交系统中,我们一般是先查询一批内容列表,然后点击某条内容查看详情,在没有添加biz缓存前,内容信息的查询流程图应该为:从上图以及上一篇文章 缓存设计的好,服务基本不会倒 中我们可以知道,内容列表的获取是没办法依赖缓存的, 如果我们在业务层添加一层缓存用来存储列表中的关键信息(甚至完整信息),那么多行记录的访问不再是一个问题

2021-05-13 16:32:51    分类:博客    缓存策略   微服务复杂查询