数据缓存的实现

通常对数据库的查询可能有很多重复的数据,如,
A:select * from table where field1=? and field2=?
B也进行相同的查询,如此数据库要执行2条相同的语句,显示2次相同的结果。为了减少网络开销,提高系统性能,打算在我们自己的架构里实现数据缓存,在这里讨论一下实现的方式:
1)以SQL语句为CacheKey?
2)Cache里的数据如何与数据库同步呢?用设定有效时间?过期就重新从数据库读取?

1.可以以SQL语句为CacheKey
2.一旦数据库更新,就进行Cache数据删除。

推荐使用Hibernate/CMP等这些持久层技术,本身包含Cache了。为了应付大批量查询,可参考Jdon框架的批量查询Cache.

> 1.可以以SQL语句为CacheKey
> 2.一旦数据库更新,就进行Cache数据删除。
>
> 推荐使用Hibernate/CMP等这些持久层技术,本身包含Cache了
> N擞Ω洞笈坎檠刹慰Jdon框架的批量查询Cache.

谢谢banq,这里有个问题,如何判断数据更新了?
比如,之前一个SQL的结果以List存入Cache,当数据库再插入一条记录后,再次查询,Cache根据相同的key,读取出缓存对象,这时候如何
保证这个缓存对象是最新的呢?
我参考了一下jdonframework,但是小子愚顿,没看出来您是如何在select出结果集的时候调用Cache 存储的?还请banq指教.

>如何判断数据更新
不作判断,费时费力,而是在数据发生更新这个事件时,立即清除Cache,这样,下次读取这个数据时,因为缓存中没有了,肯定它会从持久层获取数据,这个数据无疑是最新的。

那如何知道是哪个数据发生更新呢?该不是让业务层去调用getCache(key).clear()吧?

用消息?