`
itsnack
  • 浏览: 39512 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

OSCache中的cron expression

阅读更多
OSCache中的cron expression
在OSCache2.0以前的版本,内容只能根据它在缓存里呆了长时间来判断是否过期,比如,她是基于内容的年龄的。如果你需要指定一个特殊的日期/时间使内容过期,你就得自己动手写一个自定制的RefreshPolicy类。
OSCache2.0现在给你一种可以根据指定的时间使内容过期的能力,这是一种基于cron表达式的能力。
What is a Cron Expression?
你们中的许多可能已经对于unix中的cron程序非常的熟悉了。对于那些不熟悉的来说,cron是一个允许用户在“用户可设置”的时间自动执行命令或者脚本的后台处理过程。OSCache之所以被关注的一个重要原因就是cron表达式的语法允许用户当命令要被执行的时候来进行指示 - 现在你可以使用相同的语法来使OSCache中的内容统一过期!一个cron表达式是一个简单的文本字符串,指定被用来比较的日期和或时间。
How Does OSCache Match Against an Expression?
从某种意义上说,OSCache使用cron表达式看起来和你起初所期望的是向违背的。当使用一个cron表达式来测试一个entry是否过期时,OSCache找到一个和表达式所定义的想匹配的日期/时间(在当前时间以前找)。这个日期/时间就被当做“过期时间” - 在这个时间以前被装入缓存的entry都被视为过期,并抛出NeedsRefreshException异常。


比如说,假定你指定了一个cron表达式为每小时都匹配一次, ("0 * * * *")。如果现在的时间是10:42,那么所有10:00以前被放入缓存的内容都会被视为过期。

What is the Difference Between the Refresh Period and a Cron Expression?
refresh周期和cron表达式的区别是refresh周期指定了一个entry所能存活的最长年龄。同时,一个cron表达式指定了一个特殊的过期时间,并将忽略这个entry的年龄大小。

比如,设想你在10:29am缓存了一个对象。使用refresh周期为30分钟的话,entry将在10:59过期。如果使用一个为 "0,30 * * * *"的cron表达式的话,entry将在10:30过期。
The Cron Expression Syntax
一个cron表达式由以下5个部分组成:
分钟(Minute) - 指定在一小时的第几分钟使内容过期。它应该是有个0到59的数字。

小时(Hour) - 决定在一天中的第几个小时的时候将内容视为过期。它指定使用24小时制,所以它的值应该在0到23之间。

一月中的一天(DOM) - 这里是一个1到31的数字。它指示了在哪一天将内容视为过期。例如:将每个月的第10天做为过期日,那么这个部分应该填写10。

月(month) - 一年中的第几个月将视为内容过期。这里可以用数字(1到12)表示,也可以月份真实名称(如:'January')。月份的名字可以不在乎大小写并且只有开头的三个字母有用,其他的可以忽略。

一周中的一天(DOW) - 指出在一周中的哪一天内容过期,这里可以用数字值(0-6, 0 = Sunday, 1 = Monday, ..., 6 = Saturday),或者你也可以使用每天的具体名称,就象月的名字一样,DOW一样不在乎大小写,并且只有开头的三个字母有用。

如果你不想为一个特定的部分指定值(比如,你想让你的cron表达式中的某一部分可以匹配任何一个允许的值),那就使用*字符来作为该部分的值。

例,定义一个在4月的每天中的11:45pm使内容过期的表达式,可以写成"45 23 * April *"。

OSCache同样允许你随意在每个部分的指定list、range和interval(或者是这三者的集合)。
 lists - 在list中的项目用','分割。内容过期的时间将匹配list中每一个指定的值。例如,"0,15,30,45 * * * *" 将每隔15分钟报告过期。  ranges - 这里使用'-'来划分每一个范围。一个range将包含从这个范围起始到结束(包含边界)中的所有值。例如,"* * * Jan-June *" 将在一年中的头六个月的每分钟报告内容过期。
 intervals - 一个间隔用'/'来分隔。在'/'左边的值是有一个起始点或者说是一个需要增长的范围,而右边的值指定了间隔或者说是步长。如下例: "10/20 * * * *" 等价于"10,30,50 * * * *",

"10-45/20 * * * *" 将只匹配一小时中的第10分钟和第30分钟, 因为第50分钟已经超过了他所指定的范围(10-45)。

在一个间隔的左手边使用‘*’表示在范围内所有可用的值。
Eg "*/10 * * * *" matches minutes 0,10,20,30,40 and 50.
Notes
 如果你愿意的话,你可以同时既指定一个cron表达式又指定了一个refresh间隔。如果你想在午夜报告内容过期,同时有不希望内容的寿命超过6小时,这时这种做法是很有帮助的(个人认为:这个功能完全可以仅仅通过一个cron表达式来实现)。
 指定超出范围的值,比如在月的部分你写了个13,将会导致一个ParseException被抛出。
 如果一个DOM在一个给定的月份中并不存在,将会抛出ParseException异常。例如:我们永远都不会找到和"* * 31 Feb *" 匹配的结果,因为2月从来就没有31号。
 不能同时既指定DOM值又指定DOW值,其中一个必须被设置为'*',否则一个ParseException将被抛出。
 闰年和local daylight savings time在这里都是有效的。例如,"0 0 29 Feb *" 将与2月29日的凌晨时刻匹配,只是4年才有一次。
 用来和cron表达式进行匹配的当前时间通常基于服务器上的本地时间。

 

分享到:
评论

相关推荐

    OSCache配置说明文档

    本文档的主要目的是阐述OSCache的核心功能、配置方法以及实际应用中的操作步骤,帮助开发者理解和有效地利用OSCache提升应用程序性能。 阅读对象: 此文档适合对Java Web开发有一定了解,希望引入缓存机制以优化...

    OSCache学习例子 实例

    在这个"OSCache学习例子 实例"中,我们将深入探讨如何在J2EE环境中集成并使用OSCache。 首先,理解OSCache的基本概念至关重要。OSCache的核心功能是提供内存中的对象缓存,它支持两种主要的缓存模式:本地缓存和...

    oscache缓存配置

    osCache的核心功能是提供了一个内存中的对象缓存系统,通过将常用数据暂存到内存中,避免了频繁的数据库查询,从而显著提升应用程序的性能。 在开始配置osCache之前,我们需要了解其基本概念和工作原理。osCache...

    Oscache框架的搭建步骤

    6. **集成到JSP页面**:在JSP页面中引入Oscache标签库,使用`<%@taglib uri="oscache" prefix="cache"%>`声明,其中`uri`值应与`web.xml`中配置的`<taglib-uri>`一致。 7. **实现缓存逻辑**:在JSP页面中利用...

    OsCache缓存框架使用示例

    OsCache是Java应用程序中常用的缓存框架,它能够有效地提高应用程序的性能,通过将经常访问的数据存储在内存中,减少对数据库或其他数据源的访问,从而降低系统负载。本示例将通过一个天气预报Web服务的场景,详细...

    oscache缓存技术入门实例

    在本文中,我们将深入探讨osCache的基本概念、工作原理以及如何在实际项目中进行配置和使用。 一、osCache基本概念 osCache的核心理念是将数据存储在内存中,以减少对数据库或其他资源的频繁访问,从而提高系统的...

    OSCache需要的包

    OSCache 是一个高效的、开源的缓存框架,主要用于 Java 应用程序,它提供了一种在内存中存储对象的方式,以提高数据访问速度并减轻数据库的负载。在Java Web开发中,OSCache常被用于实现Session复制和分布式缓存,...

    oscache说明

    在 `web.xml` 中添加对 Taglib 的支持,然后在 JSP 页面中引入标签库,如 `<%@ taglib uri="/WEB-INF/classes/oscache.tld" prefix="cache"%>`。 3. **整个页面的缓存**:通过实现 `CacheFilter`,可以对整个页面或...

    oscache-2.1.jar

    oscache-2.1.jar oscache-2.1.jar

    oscache详细配置文档

    为了在 JSP 页面中使用 OSCache 功能,需要将 `soscache.tld` 文件添加到 CLASSPATH 中,通常放在 `src/webapp/WEB-INF/classes` 或 `etc` 目录下。然后在 `web.xml` 文件中添加标签库定义,如下所示: ```xml ...

    oscache的使用实例和详解

    - **添加依赖**: 在Java项目中,需要将osCache的JAR文件添加到类路径中,或者在Maven/Gradle项目中添加对应的依赖配置。 - **配置文件**: `oscache.xml`是osCache的主要配置文件,包含缓存区域定义、缓存策略等设置...

    oscache处理

    - 配置osCache插件:首先需要将osCache的jar包添加到项目类路径中,然后在struts.xml配置文件中引入osCache拦截器,并配置相应的拦截规则。 2. **iBatis与osCache**: - iBatis是一个轻量级的持久层框架,它允许...

    oscache-java缓存框架

    osCache是Java开发中常用的缓存框架之一,它主要用于提高应用程序的性能和效率,通过将数据存储在内存中,减少对数据库的访问。osCache不仅可以用于Web应用,也可以用于任何Java应用程序,支持集群环境,提供了丰富...

    oscache,缓存机制的使用

    此外,`oscache`还提供了诸如`cron`、`groups`、`language`、`refreshpolicyclass`、`refreshpolicyparam`等属性,进一步增强了缓存管理的灵活性和精细化控制能力。 ### 结论 通过合理配置和使用oscache,开发人员...

    oscache-2.4.1-full

    OSCache基于内存的缓存系统能够将经常访问的数据存储在内存中,避免了每次请求时都需要从数据库中获取数据的开销。通过缓存热点数据,它可以显著提升Web应用的响应速度,降低延迟,提高用户体验。 2. **JSP定制...

    oscache缓存技术

    - **缓存对象**:osCache允许开发者将任何Java对象存储到缓存中,以便后续请求可以直接从内存中获取,而无需再次进行昂贵的数据库查询或其他计算操作。 - **缓存区域**:osCache支持多个缓存区域,每个区域可以有...

    基于OSCache的页面缓存(收藏)

    OSCache是Apache软件基金会的开源项目,它是一个高性能、易用的Java缓存框架,广泛应用于各种企业级应用系统中,特别是用于实现页面级别的缓存。这篇博客将深入探讨如何利用OSCache来实现页面缓存,并结合实际案例...

    oscache-2.2jar包

    对于osCache来说,这个文件可能会解释如何配置和集成osCache到项目中,以及如何解决常见问题。 3. **etc**:这个目录可能包含了配置文件,如`oscache.properties`,用于设置缓存的行为,例如缓存大小、过期策略、...

    OSCache缓存技术(6)【实例】

    本篇文章将深入探讨OSCache的核心概念、配置、使用实例以及其在实际开发中的应用。 首先,OSCache是基于内存的缓存系统,它允许开发者将常用的数据存储在内存中,以便快速访问。这种技术对于处理高并发请求和大数据...

Global site tag (gtag.js) - Google Analytics