金色坐标

关注互联网应用和搜索引擎技术

« OSGI框架中组件(Bundle)服务接口的实现形式域名劫持—Discuz!论坛故障原因 »

系统关键表访问简单缓存功能Cache实现

1,Cache实现概述

Cache通过一个HashMap实现,并提供从Cache里获得表记录、更新表记录、清空Cache、Cache改变大小和起停接口。

可以动态设置Cache的最大容量。

Cache的最大容量和是否启用可通过配置函数来设置。

2,Cache的同步

Cache里的数据需要与数据库中的数据保持一致。由于数据库里的表记录记录除了通过本接口修改外,还可通过管理端直接修改,因此需要在数据库里的记录更新后自动更新Cache里的数据。

为此,需要为Attachment EJB实体增加一个EJB监听器,这个监听器在对Attachment EJB实体进行更改后触发如下操作:

成功创建一个实体后:无操作;
成功更新一个实体后:将该实体从Cache中删除;
成功删除一个实体后:将该实体从Cache中删除。
该监听器的实现封装在com.kingxy.www.attachment.service.impl.AttachmentListener里。

3,Cache的更新

在需要往Cache里插入一条刚刚被访问的新表记录时,如果Cache里的空余容量无法放入新表记录,则需从Cache里移除一些表记录,以腾出空间放入新表记录。移除表记录的算法为:

记录Cache里的每个表记录的最后被访问时间(初始时间为进入Cache的时间),需要移除时删除最久未被访问的表记录,即最后被访问时间最小的表记录。

在Cache里获取指定的表记录时,如果获取到了,需更新该表记录的最后被访问时间。

Cache的更新算法其实是Cache实现的关键点,从上面这个最简单的到复杂度需要云计算的都有,使用哪个根据自己具体情况进行选择和设计。

4,其它实现要点

需保证线程安全,每个需访问Cache内部数据的公开函数都必须标明为线程同步的。




原创文章,如转载请注明:转载自金色坐标 [ http://www.kingxy.com/ ]

本文链接地址:http://www.kingxy.com/archives/72.html

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 通过Google订阅本站
  • 通过bloglines订阅本站
  • 通过抓虾订阅本站
  • 通过yahoo订阅本站

Search

Google

最新评论及回复

最近发表

金色坐标博客——京ICP备09009094号

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.
KingXY Blog - This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.