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内部数据的公开函数都必须标明为线程同步的。




