背景
最近在写代码的时候,在for循环中根据key从redis中获取value;
然后,问题就出现了:for循环了3000+次,足足耗时10+秒。。。(一开始的时候没有意识到会有这么多数据)
so,how to deal it ???
使用Guava缓存
同步缓存
Guava缓存网上资料不少,将源码的也多;
我个人理解就是放在本地的一个高级点的Map(接触不深,堪堪够满足当前需要);
好比平时我们自己在代码中搞的那些个List或者Map之类的一个作用,就是用来当本地缓存;
只不过Guava这个多了很多功能(比如设置本地缓存的大小上限免得内存玩爆,还有什么自动更新的策略等),线程的问题也不需要自己考虑,总之用就完了;
PS:多少一句,其实使用Redis做缓存,然后使用Guava这种工具做本地的二级缓存的方案,都是业内的“老知识”了,然而我也是最近碰到了,才知道的
。。。。。上代码
同步缓存代码
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class