`
MarkDong
  • 浏览: 2328 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

域对象事件驱动的缓存策略(二)

    博客分类:
  • J2EE
阅读更多

    上文分析了目前在项目中使用的一些缓存的局限性,引出了一个我称之为“域对象事件驱动的缓存策略”的概念。本篇就仔细分析一下如何利用域对象事件来驱动缓存。

    通常使用的域对象无非会产生下面几种事件:增加删除修改(域对象的状态改变也算做修改)。这三种事件在我们通常的项目中基本可以对应到DAO层的三个方法:insert, delete, update。在DAO层的这三类方法中,我们可以明确的获得是对哪类域对象(Class)进行了处理,同时处理的又是哪个具体的实例(Object)。DAO层只需要将这些明确的信息通知到缓存管理模块,那么剩下的事就是缓存管理模块根据这些信息对已有的缓存做淘汰了。

    通常的缓存管理都是以key-value的形式来保存缓存信息的。其中key值是由使用者组装的一个唯一标识,value是使用者存放在该标识下的任意内容,可以是一段文本(例如HTML, XML, JavaScript等等),也可以是任意的对象(例如项目中的VO, Dom对象等等)。先看看我在以往纯JSP的项目中是怎样使用页面缓存的。例如列出所有文章列表的页面,用"article_list_all”字符串作为前缀,其后再拼装分页信息(页数,每页记录数,排序条件)的字符串作为该页面缓存的key值,将截获的request中的html内容作为该缓存的value存储到缓存系统中。这种缓存的缺陷就像上篇文章所讲的,只能设置它为每若干分钟进行强制淘汰,那么在这几分钟之内新发的文章就无法出现在文章列表中。这种策略对于实时性要求不强的内容发布的前台展现还是可以使用的,但是对于后台文章管理就已经不能胜任了。

    要想使缓存可以处理DAO层的事件,必须引入一层由Class和Object定位到key值的映射层。这个映射层通过某种规则可以将DAO层的事件查询到当前缓存的key的集合。我目前想到的规则也比较简单,就是在使用缓存系统时,不仅指定key和value,同时要指定这个key和哪些域对象(Class)相关,同时和这些Class是在什么样的范围上相关。

    例如上面说到的文章列表的例子,"article_list_all”这个缓存,就和ArticleDO这个域对象相关,范围就是all,即是和所有ArticleDO的实例相关,任何的对ArticleDO的操作都会是"article_list_all"缓存失效。如果是某个栏目下的文章列表页,key值可以定义为"column_article_list",该缓存定义为和ArticleDO相关,同时范围是article.columnid等于当前栏目id,那么当符合条件(即属于当前栏目)的ArticleDO的实例发生变化时,这个缓存会被置为失效。

    当然,上面说的这种规则还比较简单,最终要想实现出一个完备的“域对象事件驱动的缓存策略”可能还会比这个复杂的多。

1
0
分享到:
评论

相关推荐

    ASP.NET的网页代码模型及生命周期

    在ASP.NET中,通过使用模拟事件驱动模型的行为代替了ASP的线性处理模型。ASP.NET页框架模型隐式的为用户建立了事件和事件处理程序的关联。ASP.NET让用户可以为从浏览器传递的事件在服务器代码中设置相应的处理程序。...

    Windows Server 2008 活动目录视频课程csdn.txt

    4-4使用组策略为域用户映射网络驱动器03:55 4-5使用组策略为用户创建拨号链接02:44 4-6配置域用户登录发短信通知管理员06:35 4-7使用vbs脚本为用户自动连接打印机06:46 4-8使用开机脚本自动将开启XP防火墙04:35 4-9...

    Java核心技术II(第8版)

    12.4 访问对象域 12.4.1 访问实例域 12.4.2 访问静态域 12.5 编码签名 12.6 调用Java方法 12.6.1 实例方法 12.6.2 静态方法 12.6.3 构造器 12.6.4 替代方法调用 12.7 访问数组元素 12.8 错误处理 12.9 使用调用API ...

    精通windows server 2008 命令行与powershell电子书PDF版(第二卷)

    9.6.1 gpoTool——检查域控制器上组策略对象 428 9.6.2 gpresult——组策略结果检测工具 431 9.6.3 gpupdate——组策略刷新工具 434 第10章 批处理和配置文件 436 10.1 批处理命令 436 10.1.1 break——检查Crtl+C ...

    jdbc基础和参考

    1.域对象:主要作为信息的载体 2.行为对象:注重操作 Register(User user){ } insert(User user){ String sql = "insert into s_user( user.getId()+user.getName().......)"; } insert(User user){ save...

    citrix 中文管理操作手册

    在包含数千个对象的域中发布应用程序 39 使用发布应用程序向导发布资源 39 管理已发布资源的发布选项 40 选择资源类型和发布方法 40 定位要发布的应用程序 41 验证已发布应用程序的命令行参数 42 在内容与已发布应用...

    精通windows server 2008 命令行与powershell 电子书PDF单文件完整版

    9.6.1 gpoTool——检查域控制器上组策略对象 428 9.6.2 gpresult——组策略结果检测工具 431 9.6.3 gpupdate——组策略刷新工具 434 第10章 批处理和配置文件 436 10.1 批处理命令 436 10.1.1 break——检查Crtl+C ...

    精通windows server 2008 命令行与powershell电子书PDF版(第一卷)

    9.6.1 gpoTool——检查域控制器上组策略对象 428 9.6.2 gpresult——组策略结果检测工具 431 9.6.3 gpupdate——组策略刷新工具 434 第10章 批处理和配置文件 436 10.1 批处理命令 436 10.1.1 break——检查Crtl+C ...

    精通windows server 2008 命令行与powershell 电子书PDF版(第四卷)

    9.6.1 gpoTool——检查域控制器上组策略对象 428 9.6.2 gpresult——组策略结果检测工具 431 9.6.3 gpupdate——组策略刷新工具 434 第10章 批处理和配置文件 436 10.1 批处理命令 436 10.1.1 break——检查Crtl+C ...

    精通windows server 2008 命令行与powershell电子书PDF版(第三卷)

    9.6.1 gpoTool——检查域控制器上组策略对象 428 9.6.2 gpresult——组策略结果检测工具 431 9.6.3 gpupdate——组策略刷新工具 434 第10章 批处理和配置文件 436 10.1 批处理命令 436 10.1.1 break——检查Crtl+C ...

    windowsnt 技术内幕

    用Winn32.exe执行Windows NT升级 使用联机丛书 系统策略编辑器简介 理解系统策略编辑器模式 理解系统策略处理 在域控制器上实现系统策略 在非域控制器上实现系统策略 使用系统策略编辑器复选框 从登录对话框中删除...

    Java开发技术大全 电子版

    2.3.9变量的作用域34 2.3.10数据类型转换34 2.4运算符与表达式37 2.4.1算术运算符和算术表达式38 2.4.2关系运算符和关系表达式43 2.4.3逻辑运算符和逻辑表达式44 2.4.4条件运算符和条件表达式48 2.4.5位...

Global site tag (gtag.js) - Google Analytics