新年第一个问题,在这祝大家新年快乐……使用场景:网页游戏现在的使用情况是那段代码需要缓存数据就在哪从缓存中取比如:
Object cacheObj = getCache("xxxxx"); // 从缓存中获取数据
然后根据cacheObj 做相关的操作。不是在统一的一处获取缓存数据,再做操作,是哪里用,就在哪里取,这样造成的问题是,到处都有缓存代码,就像log一样。。我想知道这样做对不对,还是统一的在一处获取,不过统一的在一处获取,就会将所有的对象统一的放到一个对象中……这是第一个问题·····希望大家有经验的多多指点第二个问题,关于使用缓存了,如何保证事务的唯一性现在做的是网页游戏,不会一次操作就会操作一次数据库,是定时的往数据库里去刷数据,这样就没办法保证数据的一致性比如,我把数据存入到缓存,然后每隔5分钟后操作一次数据库,把缓存中的数据存入到数据库中,但这样,但是事务就是一个问题···这里我也没有解决方案,也请大家多帮帮忙,给出一些经验建议谢谢大家在线等……
Object cacheObj = getCache("xxxxx"); // 从缓存中获取数据
然后根据cacheObj 做相关的操作。不是在统一的一处获取缓存数据,再做操作,是哪里用,就在哪里取,这样造成的问题是,到处都有缓存代码,就像log一样。。我想知道这样做对不对,还是统一的在一处获取,不过统一的在一处获取,就会将所有的对象统一的放到一个对象中……这是第一个问题·····希望大家有经验的多多指点第二个问题,关于使用缓存了,如何保证事务的唯一性现在做的是网页游戏,不会一次操作就会操作一次数据库,是定时的往数据库里去刷数据,这样就没办法保证数据的一致性比如,我把数据存入到缓存,然后每隔5分钟后操作一次数据库,把缓存中的数据存入到数据库中,但这样,但是事务就是一个问题···这里我也没有解决方案,也请大家多帮帮忙,给出一些经验建议谢谢大家在线等……
那个功能模块需要使用缓存就在哪里写,没有问题,你也不用担心这个问题,因为各个模块的缓存策略有可能不同,但是你可以提炼出较通用的方法去应用到不同的模块。
第二个问题:
Object cacheObj = getCache("xxxxx");
如果cacheObj==null,那必然是从数据库中读出来,再add到缓存中,下次再访问cacheObj 不等于null,才是你这样直接从cache中取。
1.那么你刷数据如果是直接更新数据库的话,那么每次更新完后必然要delete掉相应的缓存,否则肯定是数据不一致。
2.另一种方法是做缓存的时候key应该是用id来表示的,那么value你就再拼接一个数据库中对应的updatetime,这样你每次更新了数据就去比较updatetime,如果updatetime不一样,再把值取出来set缓存中的这个值,就可以了。
另外,你说的事务问题,就是指“没办法保证数据的一致性”吧,参考ilrxx的