Guava本地缓存实际使用上碰到的疑问
来源:11-3 缓存-redis的使用讲解-1
寒暄丶
2018-12-24
视频中您提到了guava cache在使用缓存时,在调用cache.get()方法时,如果缓存中没有此key对应的值,则默认调用截图中的重写方法来查询数据库中的内容,这里有一个疑问,因为他属于匿名内部类重写方法,除了key之外无法传递其他的参数了 所以我再这里使用了自定义类来实现CacheLoader类的方式来完成 如图
但是这样的话 代表每个需要缓存的操作都需要自定义一个类来对应进行操作(使用的dao层类不一、参数不一)
这样的操作个人觉得很复杂 必要性也不大 所以想咨询老师 这里如何进行操作和您在股票实战时是如何处理的
2.麻烦您看一下这样
如果调用getIfPresent方法得到缓存中没有所需要的数据(返回null),判断如果为null的时候就说明没有数据,则调用get方法来通过数据库获取,再put进缓存 这样两次调用get的相关方法 是否多余 有何改进的地方呢
谢谢老师~
写回答
1回答
-
你好,股票项目里其实我都只使用的getIfPresent,判断为null时去数据库加载,并更新到缓存里供使用。这样做是基于很多前提的:首先大部分数据都会命中缓存,查询db很少(由于在各个环节引入大量缓存),我这边核心数据存储其实都是先放入redis的,所有查询也基于redis,基本上不用担心db并发查询带来的流量上涨。而对db操作流量最大的时间是放在闭市后的凌晨大部分都在睡觉。
我个人感觉这些东西没固定要求该如何写,懂得了api,根据自己的场景去分析使用就可以了。062019-01-09
相似问题