`
itsnack
  • 浏览: 38256 次
  • 性别: 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由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。OSCache是一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决...

    oscache-2.1.jar

    oscache-2.1.jar oscache-2.1.jar

    oscache(JSP定制标记应用)

    javaweb做页面缓存常用,OSCache是一个工业级的J2EE缓存实现。OSCache不但能缓存java对象,还可以缓存页面,http请求和二进制内容,例如pdf文件等。通过应用OSCache,我们不但可以实现通常的Cache功能,还能够改善...

    用OSCache进行缓存对象

    1、OSCache是什么? 2、OSCache的特点 3、有关“用OSCache进行缓存对象”的研究

    oscache缓存技术入门实例

    oscache缓存技术入门实例

    Oscache使用手册

    尤其是在Web应用中,通过缓存页面的输出结果,可以很显著的改善系统运行性能。 OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛...

    oscache文档

    OSCache标记库由OpenSymphony设计,它是一种开创性的JSP定制标记应用,提供了在现有JSP页面之内实现快速内存缓冲的功能。OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的...

    OSCache学习例子 实例

    OSCache学习例子 实例 很好的与j2ee结合

    oscache的例子

    OSCache标记库由OpenSymphony设计,它是一种开创性的缓存方案,它提供了在现有JSP页面之内实现内存缓存的功能。OSCache是个一个被广泛采用的高性能的J2EE缓存框架,OSCache还能应用于任何Java应用程序的普通的缓存...

    oscache 使用介紹

    OSCache是OpenSymphony这个开源项目众多Projects中的一个。他是一个高效的J2EE缓存框架,能够很好的解决动态网站速度的问题。

    oscache详细配置文档

    本文叙述了如何使用oscanche,最后的配置需要在oscache.properties中完成

    Oscache框架的搭建步骤

    使用oscache进行缓存,大大提高web系统运行效率

    oscache jar包下载

    oscache-2.4.1.jar资源包,用于java缓存、jsp页面缓存

    OSCache需要的包

    oscache.tld,oscahe.properties,oscache-2.1.jar,commons

    OScache配置

    在 OSCache组件中提供了一个CacheFilter用于实现页面级的缓存,主要用于对web应用中的某些动态页面进行缓存,尤其是那些需要生成PDF 格式文件/报表、图片文件等的页面,不仅减少了数据库的交互、减少数据库服务器的...

    oscache-java缓存框架

    oscache-java缓存框架插件和安装教程,使用教程一步到位

    oscache说明

    oscache的简单介绍

    oscache-2.2jar包

    oscache-2.2jar包

    oscache的使用

    oscache的使用

    oscache所需jar包

    commons-logging.jar包 oscache-2.4.1.jar包 oscache-2.4.1.jar

Global site tag (gtag.js) - Google Analytics