当前位置: 首页 > 面试题库 >

基于日期的ehcache

别兴国
2023-03-14
问题内容

我正在使用ehcache 2.5.4。

我有一个对象,需要整天进行缓存,并在每天的00:00 am用新值刷新。

当前使用ehcache配置,我只能设置生存时间和空闲时间,但这取决于我创建对象的时间或使用时间。即:

    <cache
    name="cache.expiry.application.date_status"
    maxElementsInMemory="10"
    eternal="false"
    timeToIdleSeconds="60"
    timeToLiveSeconds="50" />

有没有一种方法可以使ehcache根据特定的时间使特定的缓存过期。


问题答案:

我通过扩展Ehcache的Element类来做到这一点:

class EvictOnGivenTimestampElement extends Element {

    private static final long serialVersionUID = ...;
    private final long evictOn;

    EvictOnGivenTimestampElement(final Serializable key, final Serializable value, final long evictOn) {
        super(key, value);
        this.evictOn = evictOn;
    }

    @Override
    public boolean isExpired() {
        return System.currentTimeMillis() > evictOn;
    }
}

其余的操作就像将EvictOnGivenTimestampElement对象的新实例而不是放入缓存一样简单Element

这种方法的优点是您不必担心外部cronjobs等。明显的缺点是Ehcache API的附件,我希望它不会经常更改。



 类似资料:
  • 我正在使用Hibernate标准API并使用投影获得如下所示的结果: 输出: 这段代码按预期工作,但我想在唯一日期记录的基础上运行distinct函数,这意味着distinct函数不应该考虑时间值,而应该只考虑日期值。所以out put应该是这样的: 知道怎么做吗?

  • 我有一个SQLite数据库,我在其中根据给定日期从所有列获取数据,例如。2018年9月30日。在COL2中,我以相同的格式保存日期。 但是现在COL2不再有2018年9月30日这样的日期格式了。因为我已经决定在第二栏中加入数据输入时间。 所以我把COL2保存为“EEE MMM dd HH:mm:ss Z yyyy”这种格式。但是我愿意将我的“EEE MMM dd HH:mm:ss Z yyyy”格

  • 本文向大家介绍基于vuejs+webpack的日期选择插件,包括了基于vuejs+webpack的日期选择插件的使用技巧和注意事项,需要的朋友参考一下 基于vuejs+webpack环境使用的日期选择插件,希望大家喜欢。 支持单选和多选日期 支持限定开始和结束日期范围选择。 支持小时分钟 需要引入fontawesome.io 的图标库。 Options :show 是否显示 :type date|

  • 我有一个编辑屏幕,其中在我的开始日期和结束日期是从数据库中预先填充的。该控件是一个UIdatePicker插件。我想根据来自服务器的开始日期限制/禁用以前的日期。此外,当我更改日期时,我希望结束日期从开始日期后的一天开始。由于首先填充值,然后将控件添加到输入字段,因此我无法控制它。 任何帮助都将不胜感激。代码如下:

  • 所以我有: < code >日期开始日期,即< code > EEST 2022年3月27日17时32分01秒 和 ,即 我需要根据这两个值生成一个新日期。我需要将240H周期添加到开始日期。240H意味着我需要添加到开始日期的10天,我最终需要一个新的日期,应该是EEST 2022年4月6日星期三17:32.01。 PS.我是Java的新手,希望我不会问愚蠢的事情。

  • 有没有比我做的更好的方法来编码它?因为我需要将date解析为string和than解析为int来比较,而且代码相当长。 }