多存储的数据一致性,mongo redis mysql

wangbintao1992 2016-11-03 12:29:40
加精
求助,现在有一方法,需同时将数据操作在mysql mongo redis,mysql已经做了事务,mongo 和redis,没做事务,也没条件做,
先需要在任何一环存储出现异常的时候,回滚所有数据,求助。
这个回滚并不是狭义的事务回滚,能保持数据一致性就行
求大牛
...全文
5563 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWW_MSIDEVS_NET 2016-11-09
  • 打赏
  • 举报
回复
学习,路过
拘谨的小人 2016-11-09
  • 打赏
  • 举报
回复
引用 13 楼 wangbintao1992 的回复:
[quote=引用 12 楼 u012943783 的回复:] [quote=引用 8 楼 wangbintao1992 的回复:] [quote=引用 6 楼 u012943783 的回复:] [quote=引用 5 楼 wangbintao1992 的回复:] [quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] najiu
引用 5 楼 wangbintao1992 的回复:
[quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] 那就要对每一次的更新进行判断 不成功回退 [/quote] 这个Mongo的事务比较麻烦,或者说,目前阶段不能提供mongo和redis的回退[/quote] 还是回到我第一的回答 mongo redis 在使用过程中 一般都是通知型的 丢就丢了 有异常走异常的补救机制 不影响业务继续进行 so 不要考虑你所说的不同数据库数据一致性 有主从备份的数据库才会考虑这个问题 [/quote] 这个,通知型,感觉说到我心里了, 一直总结不出来现在的现象,通知型对啊。想办法补偿![/quote] 赐我分吧 哈哈哈 我是来冲分的
wangbintao1992 2016-11-09
  • 打赏
  • 举报
回复
引用 12 楼 u012943783 的回复:
[quote=引用 8 楼 wangbintao1992 的回复:] [quote=引用 6 楼 u012943783 的回复:] [quote=引用 5 楼 wangbintao1992 的回复:] [quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] najiu
引用 5 楼 wangbintao1992 的回复:
[quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] 那就要对每一次的更新进行判断 不成功回退 [/quote] 这个Mongo的事务比较麻烦,或者说,目前阶段不能提供mongo和redis的回退[/quote] 还是回到我第一的回答 mongo redis 在使用过程中 一般都是通知型的 丢就丢了 有异常走异常的补救机制 不影响业务继续进行 so 不要考虑你所说的不同数据库数据一致性 有主从备份的数据库才会考虑这个问题 [/quote] 这个,通知型,感觉说到我心里了, 一直总结不出来现在的现象,通知型对啊。想办法补偿!
拘谨的小人 2016-11-09
  • 打赏
  • 举报
回复
引用 8 楼 wangbintao1992 的回复:
[quote=引用 6 楼 u012943783 的回复:] [quote=引用 5 楼 wangbintao1992 的回复:] [quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] najiu
引用 5 楼 wangbintao1992 的回复:
[quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] 那就要对每一次的更新进行判断 不成功回退 [/quote] 这个Mongo的事务比较麻烦,或者说,目前阶段不能提供mongo和redis的回退[/quote] 还是回到我第一的回答 mongo redis 在使用过程中 一般都是通知型的 丢就丢了 有异常走异常的补救机制 不影响业务继续进行 so 不要考虑你所说的不同数据库数据一致性 有主从备份的数据库才会考虑这个问题
何小强 2016-11-08
  • 打赏
  • 举报
回复
先搞清楚mongo 和redis作用,数据是存在物理数据库中(MYSQL)中,mongo 和redis是作为缓存数据来用,如果命中缓存就走缓存,没有命中从数据库中取,写进缓存,输出。 从来没有哪个会把原始数据存在redis里面的。
  • 打赏
  • 举报
回复
引用 9 楼 wangbintao1992 的回复:
[quote=引用 7 楼 helun2008 的回复:] 先搞清楚mongo 和redis作用,数据是存在物理数据库中(MYSQL)中,mongo 和redis是作为缓存数据来用,如果命中缓存就走缓存,没有命中从数据库中取,写进缓存,输出。 从来没有哪个会把原始数据存在redis里面的。
本来redis就是作为缓存,现在是数据不一致问题,和存储在哪无关,没表达原始数据在redis里 [/quote] 我觉得三者的数据一致性还得看你的业务场景来,如果第一个被更新的是数据库,那么redis和mongo里面的数据可以根据数据库的改变而主动去同步数据库数据,个人建议三者同一事务处理比较好
wangbintao1992 2016-11-08
  • 打赏
  • 举报
回复
引用 7 楼 helun2008 的回复:
先搞清楚mongo 和redis作用,数据是存在物理数据库中(MYSQL)中,mongo 和redis是作为缓存数据来用,如果命中缓存就走缓存,没有命中从数据库中取,写进缓存,输出。 从来没有哪个会把原始数据存在redis里面的。
本来redis就是作为缓存,现在是数据不一致问题,和存储在哪无关,没表达原始数据在redis里
wangbintao1992 2016-11-08
  • 打赏
  • 举报
回复
引用 6 楼 u012943783 的回复:
[quote=引用 5 楼 wangbintao1992 的回复:] [quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] najiu
引用 5 楼 wangbintao1992 的回复:
[quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] 那就要对每一次的更新进行判断 不成功回退 [/quote] 这个Mongo的事务比较麻烦,或者说,目前阶段不能提供mongo和redis的回退
拘谨的小人 2016-11-07
  • 打赏
  • 举报
回复
引用 5 楼 wangbintao1992 的回复:
[quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] najiu
引用 5 楼 wangbintao1992 的回复:
[quote=引用 4 楼 wangbintao1992 的回复:] [quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致[/quote] 那就要对每一次的更新进行判断 不成功回退
wangbintao1992 2016-11-03
  • 打赏
  • 举报
回复
引用 4 楼 wangbintao1992 的回复:
[quote=引用 2 楼 u012943783 的回复:] 建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。 [/quote] 不好意思,没说全,Mongo数据和mysql数据不一致
wangbintao1992 2016-11-03
  • 打赏
  • 举报
回复
引用 2 楼 u012943783 的回复:
建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
那你提的例子来说,现 mysql更新成功,mongo更新成功,更新缓存redis失败,(暂定网络问题),现象就是,前端仍然是历史文章,数据不一致。
wangbintao1992 2016-11-03
  • 打赏
  • 举报
回复
引用 1 楼 shijing266 的回复:
我想知道你对这三者的修改 先后顺序是什么
主要操作mysql,带事务 成功后,操作redis,更新提供给页面价格服务,同步 成功后,操作mongo,存凭证,发消息给另一服务,异步
拘谨的小人 2016-11-03
  • 打赏
  • 举报
回复
建议先规划好 三个数据库都用来干什么 之前有个项目 mysql: 关系数据 mongo:存 文章 那种 可能会丢 redis 就做缓存了 很方便的设置时效
  • 打赏
  • 举报
回复
我想知道你对这三者的修改 先后顺序是什么
关于MyQEE MyQEE是一个开源、快速、优雅的轻量级PHP框架,支持HMVC模式,建立在PHP5.2基础之上,支持多项目管理开发,数据库内置自动主从分离功能,MySQL支持事务操作功能并且支持自动嵌套功能,多驱动设计灵活适应各种环境。点击访问 [MyQEE入门指引](./manual/guide/zh-cn/starting.md)。   拒绝粗糙不堪、复杂的代码,选择MyQEE,选择为WEB艺术家创造的PHP框架吧。   MyQEE PHP框架的特色 * MyQEE是一套轻量级的框架,但不是简陋的框架,系统具备完善的底层类库和强大的扩展功能设计; * 特有的 [HMVC](./manual/guide/zh-cn/hmvc.md) (分层MVC设计)和多项目支持,开发更灵活; * 支持时下最流行的PHP包管理器 [Composer](http://getcomposer.org/) ,并且可以使用 Composer 安装 MyQEE 提供的官方类库; * 代码一致性设计:例如 `MySQL` 和 `MongoDB` 的查询语句完全不同,但是在 MyQEE 里可以做到实现90%的一致性,你的代码既可以使用在 `MySQL` 的环境里也可以用在 `MongoDB` 上; * 包括`Database`, `Cache`, `HttpClient`, `Session`, `Storage`, `Upload` 等支持多驱动,可以适应不同环境的需求,其中数据库支持 `MySQL`, `MySQLI`, `Mongo`, `SQLite`, `Postgre`,缓存支持 `Memcache`, `File`, `Redis`, `Apc`, `Database`, `SQLite`, `WinCache` 等; * 数据库提供强大的 `QueryBuilder` 功能,可实现同相同程序兼容多种数据库,解决SQL注入隐患和迁移环境后顾之忧; * 云引擎支持:支持SAE和BAE等云引擎,MyQEE网站就运行在SAE上; * 高性能和优雅的代码:经测试 MyQEE 的初始化速度比 Codeigniter 等优秀的轻量级框架还快; * 完备和详细的文档和API支持,更可简单的生成自己的团队文档; * 为团队开发而生,特别提供团队类库功能,多项目设置可以帮助团队成员之间规划独立和共用的代码; * ORM支持,提供了特有的高性能ORM; * 支持 `RESTFul`,支持 [PHPRPC](http://www.phprpc.org/); * 独创5模式运行设计:普通控制器、后台、命令行、系统调用、RESTFul的控制器相互分离,系统更加安全可靠;   安全性 * 系统内置XSS安全过滤; * 防SQL注入,强大的QueryBuilder; * 强制数据类型转换; * 普通控制器、后台、命令行、系统调用、RESTFul 5种运行模式相互隔离,安全更有保障;   MyQEE v3.0 RC2 更新日志: 本次更新在3.0RC1的基础上做了一些完善,修复了一些Bug: 完善文档生成脚本 完善模块化的拆分 数据库增加对 group_concat 的支持,MongoDB数据库驱动支持在group查询中使用distinct查询,修复MongoDB驱动力中查询slave在新的版本里可能导致连接失败的问题 增加 BigInt 类库 日期类库完善 HttpClient 增加upload方法,可实现上传文件功能 完善邮件类库,修复 Email 中上传附件bug,支持收件人姓名 邮件的格式,完善密件抄送的功能 Session 类库优化 Swift Storage 驱动完善,token验证支持v1和v2版本,优化参数传送方式,支持url方式的配置

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧