我用rails做了一个网站,现在想用php再做一个不同的系统,将它们集成起来,用的数据是同一个mysql数据库的,请问数据访问会不会冲突?
22条回答 默认 最新
zzy9zzy 2010-12-03 11:32关注其实“抛出异常的爱”已经把缓存的问题说清楚了,并不难理解。我另外举个我常用的例子:
假设A和B系统用的都是本机的缓存,互相之间没有同步机制。这时数据库里面有银行账号,账号里面的余额可以被A和B两个系统同时访问。A系统读取到余额是100元,放到了A系统的缓存里面给需要的请求用;B系统同时也读取了余额100元放到B系统的缓存里面给需要的请求用。这时A系统的用户消费了100元,A系统将数据库里面的余额扣减为0元,A系统缓存也改为0元(没有通知B系统),这时用户同时向B系统提交了100元的消费请求,B系统从缓存中看到余额是100元,就正常扣减进行消费,但实际上这个用户只有100元,因为缓存没有和A系统同步,所以造成了错账——这对涉及到钱的系统是致命的。
为了解决这种问题,我们就要设计缓存的同步机制,让某一个系统改变了数据后要通知共用数据库的其他系统,这个机制是比较麻烦的,而且比较耗费系统资源,所以我们就考虑让所有系统使用同一个缓存,避免互相之间的同步开销,这种集中式缓存的典型代表就是——Memcache
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报