之前与同事讨论接口性能问题时听他介绍了一种缓存设计思路,记种计思觉得不错,不错做个记录供以后参考。存设
假设有个以下格式的记种计思接口:
GET /api?keys={ key1,key2,key3,...}&types={ 1,2,3,...}
其中 keys 是业务主键列表,types 是不错想要取到的信息的类型。
请求该接口需要返回业务主键列表对应的存设业务对象列表,对象里需要包含指定类型的记种计思信息。
业务主键可能的不错取值较多,千万量级,存设type 取值范围为 1-10,记种计思可以任意组合,不错每种 type 对应到数据库是存设 1-N 张表,示意:
现在设想这个接口遇到了性能瓶颈,打算添加 Redis 缓存来改善响应速度,应该如何设计?
方案一:最简单粗暴的方法是直接使用请求的所有参数作为缓存 key,请求的返回内容为 value。
方案二:如果稍做一下思考,可能就会想到文首我提到的觉得不错的思路了:
在以上两种方案之间做评估和选择,考虑几个方面:
稍作思考和计算,就会发现此场景下方案二的优势。
另外,就是需要根据实际业务场景,如业务对象复杂度、读写次数比等,来评估合适的缓存数据的粒度和层次,是对应到某一级组合后的业务对象(缓存值对应存储 + 部分逻辑),还是最基本的数据库表/字段(存储的归存储,逻辑的归逻辑)。
责任编辑:赵宁宁 来源: 闷骚的程序员 缓存数据库(责任编辑:探索)
东阿阿胶(000423.SZ)2020年度业绩扭亏为盈至4328.93万元 基本每股收益0.07元
拟斥资近4亿美元!现代汽车将收购韩国锌业5%股份【附全球镍行业分析】
桂发祥(002820.SZ)2020年度净利润降70.41% 基本每股收益0.12元