日期:2014-05-18  浏览次数:20750 次

关于memcached数据更新请教
我有个业务是每隔30分钟,批量更新memcached内数据。
我开始从数据库里查询出数据放入memcached,30分钟后数据如果没变的话,是不必更新的。那么如何知道缓存内数据变化? 第一次用memcached,请大家指教下!

------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

spymemcached可以使用CASValue<Object> cas = client.gets(key),保存时把cas.getCas()记录下来,下次执行时判断这个值来更新或不更新。这个值具体怎么变的,我记不太清了,你在多线程情况下测试测试就会用了。


我觉得你数据变动一次就要覆盖一次数据啊,难道你还想等很多数据都变更了才重新把所有的数据都加载一次?本来方向就错了吧,可以来我的博客参考下我的方案咯...
http://blog.csdn.net/shadowsick/article/details/8903278
还是我表达不够好,举个例子。用户登陆后,已用户id作为key,把用户装备数据存入缓存里,这是个30分钟缓存。然后一系列操作都操作缓存数据,我这每隔10分钟想检查缓存数据是否变化,如果用户装备属性变化的话才操作表,我这样想,减轻数据库操作量。


例如查询一个商品list存放到缓存里面,失效时间为30分钟,你以后每次请求的时候都是先读取缓存,如果不存在,或者失效的时候才去查询数据库,然后遇到一个同步问题,当有人修改了这个商品list中的其中一个对象信息,这个时候,我们要把这个list从缓存中移除,然后等待下次有人请求访问这个商品list,然后继续查询出来再放到缓存中,再后者依然是不用查询数据库,我建议你先到我的博客里看看吧,你的思路不是正解