数据缓存的实现

06-02-02 zrweng
通常对数据库的查询可能有很多重复的数据,如,

A:select * from table where field1=? and field2=?

B也进行相同的查询,如此数据库要执行2条相同的语句,显示2次相同的结果。为了减少网络开销,提高系统性能,打算在我们自己的架构里实现数据缓存,在这里讨论一下实现的方式:

1)以SQL语句为CacheKey?

2)Cache里的数据如何与数据库同步呢?用设定有效时间?过期就重新从数据库读取?

         

banq
2006-02-07 17:53
1.可以以SQL语句为CacheKey

2.一旦数据库更新,就进行Cache数据删除。

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

zrweng
2006-02-08 14:11
> 1.可以以SQL语句为CacheKey

> 2.一旦数据库更新,就进行Cache数据删除。

>

> 推荐使用Hibernate/CMP等这些持久层技术,本身包含Cache了

> N擞Ω洞笈坎檠刹慰Jdon框架的批量查询Cache.

谢谢banq,这里有个问题,如何判断数据更新了?

比如,之前一个SQL的结果以List存入Cache,当数据库再插入一条记录后,再次查询,Cache根据相同的key,读取出缓存对象,这时候如何

保证这个缓存对象是最新的呢?

我参考了一下jdonframework,但是小子愚顿,没看出来您是如何在select出结果集的时候调用Cache 存储的?还请banq指教.

banq
2006-02-08 14:37
>如何判断数据更新

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

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

猜你喜欢
2Go 1 2 下一页