思考:缓存的使用?灵活运用?


思考:缓存的使用?灵活运用?
背景:如果需要一个请求在处理过程中需要多次网络调用第三方缓存(比如redis),那么缓存最好在用户程序的内存里面(比如使用Ehcache);如果用户程序内存不够装载,
那么应该考虑对数据进行处理以支持减少调用次数,采用一次批量获取结果的方式(当然数据存储的格式要支持批量get)(比如使用redis的 hset,hget );


思考:灵活运用?
首先对自己面对的问题能够很好的理解,另外对一些工具(的说明)要很好的理解,这样才能很好的灵活地运用;
比如,在推荐系统中,经常会遇到这样一个问题:在召回后,需要读取多个,比如100个Item的素材的详细信息,怎么做?
假设,串行执行100次,那么就算一个耗时1ms,那么也需要100ms,这样对于在线服务是绝对不允许的;
如果很清楚自己面临的问题是:尽量少的网络调用就能够读取到100个素材的详情;那么就需要批量操作;
如果很清楚redis的hset,hget操作;
那么你就很清楚你面临的问题怎么解决了,就是使用redis的hset把结果集放到redis的一个压缩双链表 ziplist中,然后就可以通过hget批量获取了;

原文地址:https://www.cnblogs.com/big1987/p/11726910.html