业务踩坑——本地缓存guava的坑_什么叫本地缓存

业务踩坑——本地缓存guava的坑_什么叫本地缓存

编码文章call10242025-08-25 20:57:482A+A-

今天接到一个需求,现存接口需要加一个功能,对于不同来源的调用,需要做额外的实时处理;原有功能大致如下:


想要实现的效果如下图所示


基于开闭原则,直接在原有方法外部去基于来源处理返回的响应即可,但是处理后的第一次调用是正常的,第二次调用就出现很诡异的现象


从缓存中读取到了上一次调用处理过的对象数据,但是在我们并没有修改缓存读写的内部逻辑,仅仅是在外部对输出B,进行了一定的修改;


经过定位发现,本地缓存中,缓存的是输出B的引用,我们对输出B去做处理时,实际上也会修改本地缓存中B的值,因此,需要对输出B做深拷贝,然后再做处理;

有的小伙伴就要问了,为什么不对输入和来源的联合Key做缓存,这个确实是一个比较好的解决方案,但是对于后续处理函数要求实时处理的场景就不大适用;因为本次的业务修改中,需要对每次的访问都做实时处理,即响应B依赖于输入A,可以进行缓存,响应B'依赖于输入A和来源C,每次响应都需要实时处理,因此无法对这个结果进行缓存;

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4