Java中TimedCache带时间缓存工具类怎么用
Java中TimedCache带时间缓存工具类怎么用
这篇文章主要为大家展示了“Java中TimedCache带时间缓存工具类怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java中TimedCache带时间缓存工具类怎么用”这篇文章吧。
简述
我们在工作中会碰到需要使用带过期时间的缓存场景。但是使用redis有太重了,毕竟缓存的数据很小,放在内存够够的。hutools提供了TimedCache时间缓存工具,可以实现该场景。下面使用到该组件,并为了适配工作场景,对该工具类做优化升级。
Maven依赖
简单使用
不多说了,上代码。
importcn.hutool.cache.CacheUtil;importcn.hutool.cache.impl.TimedCache;importcn.hutool.core.thread.ThreadUtil;/**@Authorhuyi@Date2021/10/1217:00@Description:*/publicclassTimedCacheUtils{privatestaticfinalTimedCache
首先我们看一下执行的效果
说明:
1、设置的超时时间为3000毫秒,所以第一次打印在2秒钟,所以可以获取到值。
2、因为第一次打印调用了get方法,刷新了过期时间,所以依然可以获取到值。
3、第三次打印在5秒后,所以已经过期,无法获取到值,打印null。
那么,需要知道是否缓存还在可以使用containsKey方法。如下:
put("haha","1",3000L);ThreadUtil.sleep(2000);if(TIMED_CACHE.containsKey("haha")){System.out.println("第1次结果:缓存存在");}//System.out.println("第1次结果:"+get("haha"));ThreadUtil.sleep(2000);System.out.println("第2次结果:"+get("haha"));ThreadUtil.sleep(5000);System.out.println("第3次结果:"+get("haha"));//取消定时清理TIMED_CACHE.cancelPruneSchedule();
执行结果如下:
工具优化-监听过期、增加回调
我们在使用TimedCache会发现,一旦缓存过期我们并不能立马知道,很多工作场景中需要对缓存做监听回调。所以我升级了一下该工具类。
importcn.hutool.cache.CacheUtil;importcn.hutool.cache.impl.TimedCache;importcn.hutool.core.thread.ThreadUtil;importcom.google.common.util.concurrent.*;importorg.checkerframework.checker.nullness.qual.Nullable;importjava.text.MessageFormat;importjava.util.concurrent.ConcurrentHashMap;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;importjava.util.function.Consumer;/**@Authorhuyi@Date2021/10/1210:57@Description:时间缓存工具*/publicclassTimedCacheUtils{privatestaticfinalTimedCache
以上是“Java中TimedCache带时间缓存工具类怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
java fileinputstream中文乱码如何解决
javafileinputstream中文乱码如何解决今天小编给...
-
java实现点赞功能
-
java实现简单点赞功能
-
java实现收藏功能
-
java输入空行结束问题怎么解决
-
Java线程中常用的操作有哪些
-
java输入时怎么通过回车来结束输入
java输入时怎么通过回车来结束输入这篇文章主要介绍“java输入...
-
Java数据结构之线索化二叉树怎么实现
Java数据结构之线索化二叉树怎么实现这篇文章主要介绍“Java数...
-
Java中的泛型怎么理解
Java中的泛型怎么理解本篇内容介绍了“Java中的泛型怎么理解”...
-
Java字符串编码解码性能怎么提升
Java字符串编码解码性能怎么提升这篇“Java字符串编码解码性能...