这篇文章给大家分享的是有关Java怎么设置过期时间的map的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在实际的项目开发中,我们经常会使用到缓存中间件(如redis、MemCache等)来帮助我们提高系统的可用性和健壮性。但是很多时候如果项目比较简单,就没有必要为了使用缓存而专门引入Redis等等中间件来加重系统的复杂性。那么Java本身有没有好用的轻量级的缓存组件呢。答案当然是有喽,而且方法不止一种。常见的解决方法有:ExpiringMap、LoadingCache及基于HashMap的封装三种。实现缓存的常见功能,如过时删除策略热点数据预热可设置Map中的Entry在一段时间后自动过期。可设置Map最大容纳值,当到达Maximum size后,再次插入值会导致Map中的第一个值过期。可添加监听事件,在监听到Entry过期时调度监听函数。可以设置懒加载,在调用get()方法时创建对象。github地址添加依赖(Maven)示例源码运行结果token ===> null
name ===> 管理员注意
在创建map时,指定的那些参数如过期时间和过期策略都是全局的, 对map中添加的每一个entry都适用。
在put一个entry键值对时可以对当前entry 单独设置 过期免费云主机域名时间、过期策略,只对当前这个entry有效.Google开源出来的一个线程安全的本地缓存解决方案。特点:提供缓存回收机制,监控缓存加载/命中情况,灵活强大的功能,简单易上手的api。源码运行结果过时删除的钩子触发了… key ===> name
token ===> 不存在的key
过时删除的钩子触发了… key ===> pwd
name ===> 不存在的keyguava做cache时候数据的移除分为被动移除和主动移除两种。被动移除基于大小的移除:数量达到指定大小,会把不常用的键值移除基于时间的移除:expireAfterAccess(long, TimeUnit) 根据某个键值对最后一次访问之后多少时间后移除。expireAfterWrite(long, TimeUnit) 根据某个键值对被创建或值被替换后多少时间移除基于引用的移除:主要是基于java的垃圾回收机制,根据键或者值的引用关系决定移除主动移除单独移除:Cache.invalidate(key)批量移除:Cache.invalidateAll(keys)移除所有:Cache.invalidateAll()如果配置了移除监听器RemovalListener,则在所有移除的动作时会同步执行该listener下的逻辑。如需改成异步,使用:RemovalListeners.asynchronous(RemovalListener, Executor).在put操作之前,如果已经有该键值,会先触发removalListener移除监听器,再添加配置了expireAfterAccess和expireAfterWrite,但在指定时间后没有被移除。删除策略逻辑:CacheBuilder构建的缓存不会在特定时间自动执行清理和回收工作,也不会在某个缓存项过期后马上清理,它不会启动一个线程来进行缓存维护,因为首先线程相对较重,其次某些环境限制线程的创建。它会在写操作时顺带做少量的维护工作,或者偶尔在读操作时做。当然,也可以创建自己的维护线程,以固定的时间间隔调用Cache.cleanUp()。感谢各位的阅读!关于“Java怎么设置过期时间的map”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
小编给大家分享一下js如何获取数组极值,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下免费云主机域名面让我们一起去了解一下吧!获取数组极值感谢岁月无影的评论,再此补充用 es6 的实现方式以上是“js如何获取数…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。