mongodb+mysql+redis保持数据一直问题
海A天空 2015-03-08 01:14:07 项目存储架构准备使用mongodb+mysql+redis
现在对两点不太清晰,在此询问下各位大侠,给俺指点下迷津呀
一、mongodb+mysql,一个文档数据库+传统关系数据库,在系统中根据业务模块去选择哪类,哪位大侠用过这两个组合,给小弟具体指出大致划分规则。mysql具有稳定的事务处理和丰富的sql查询,mongodb在数据扩展性和高并发很有优势。如果我有以下几种场景:
1、某个模块数据量很大,但是在这个模块写数据时事务逻辑稍微有点复杂,一致性要求不是太高,没有下单或者付款流程那么严格。
2、一些基础数据,就是不经常变化的数据,但是需要经常查询。
等等情景
还有大侠们遇到的或想到的情景,改选择哪个?
二、准备用redis作为缓存层
但是问题来了,如何保证redis和mongodb还有mysql中的数据一致。
比如:
1、在执行一个操作时在mongodb或mysql中更新成功了,但是在redis中更新失败了,这种情况如何避免?出现了怎么解决?
2、在redis中更新成功了,但是在mongodb或mysql中事务失败了呢?
3、有可能你会提出:可以先更新mongodb或mysql,然后根据结果更新redis。但是还是有问题,如果你把他们放到一个事务里,二者都成功了,但是有可能在commit事务时出错,这样就只有redis更新了。如果你不把他们放到一个事务里,有可能在mongodb或mysql提交事务更新成功后,redis更新前断电了呢,这样redis没有更新。