首页 新闻 会员 周边 捐助

请教一个memcached关于sql查询结果集更新问题

0
悬赏园豆:10 [已关闭问题] 解决于 2013-08-30 16:53

我们考虑在数据库持久层做一个memcache缓存,用于降低数据库的查询压力。memcache中存储的数据库数据是一行结果作为存储,以行的主键+表名称进行存储。对于复杂的查询,直接用SQL语句的哈希值作为key,结果存储结果集的每行数据的主键列表信息。这里存在一个问题,当SQL语句结果集对应的表数据在insert/update/delete操作,使得原来缓存的数据过时。有没有好点的算法,比较准确的判断SQL缓存数据是否过期?举个例子,加上SQL语句:select * from a ,b where a.col1 = 'test'  and b.col2='test2' ,查询出的结果有1000条,数据缓存后,有个用户对表b数据进行了修改,该操作可能影响到上述SQL语句的查询结果。大家对这种情况,具体都是如何判断处理缓存是否需要更新的?

另外还有一个问题,就是并发同步问题。memcache推荐的是CAS,但是这样需要在取出数据后,这个CAS值需要一直在系统中流转,对于上面的使用数据方来说,不太合适。否则这个CAS值也不好处理,大家怎么解决的?

平凡中的快乐的主页 平凡中的快乐 | 初学一级 | 园豆:105
提问于:2013-08-29 15:45
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册