现在的需求是这样的,需要缓存服务器中使用较为频繁的对象。缓存分两级,一种是利用缓存服务器缓存对象,先考虑使用MemCached做,这方面暂时没什么问题。另一种是在服务器中利用服务器有限的内存缓存最为常用的少数对象,由于需要管理的对象很少,所以这里不需要使用任何第三方的缓存,仅仅需要自己实现一个数据结构。现在的问题就是,这样的数据结构应该如何设计?仅仅利用一个HashMap存储可以么?
调试欢乐多
UP
对于所谓脏读建议楼主干脆不考虑,使用观察者模式等机制在缓存对象内容变化时刷新相应缓存,所谓刷新简单化最好,就是直接删除。因为是通用型的缓存最好这样,否则缓存的对象类型各种各样并可能增加,没必要细致到修改对象的哪个属性。数据层先从缓存取数、取不到去数据库取、取出来放进缓存。
另外缓存的层次性需要主键来保证,就是hashmap的key,这个得好好规划一下。
再有如果未来缓存对象的增长有不可预测性的话那么楼主最好要用lru算法等保证缓存容量不至于只增不减最后太大。
class MyCache {
String cacheID ;//cache的ID
String name ;//cache的名字
int status;//cache的状态;0:正常;1:过期;2:作废.....
int useCount;//cache 被使用的数量
}2. 在HashMap中就存储这些你定义的缓存对象
Map<String, MyCache> caches = new HashMap<String, MyCache>();
开始有用到的时候就把UseCount 设为1,然后再用就再+1.3.当useCount为0时,吧status置为1.这样你就能删除了。呵呵。Good Luck
我也看过,不过我得在jdk1.4下开发...我也实现了一个简单的读写锁,应用到现在的需求应该还是满足的