热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpredisorm,RedisORM是一个可怕的主意吗?DEV社区

我们的应用处理许多数据,这些数据的变动速度非常快。我们的主数据库(MySQL)根本无法跟上,因此我们在Redis中存储了很多“当前状态”数据。现在&#x

我们的应用处理许多数据,这些数据的变动速度非常快。我们的主数据库(MySQL)根本无法跟上,因此我们在Redis中存储了很多“当前状态”数据。

现在,我们使用JSON对对象进行反序列化并存储整个对象。这导致了几个问题,因此我们将切换为单独存储每个字段。用于管理所有这些字段的代码很快就会变得棘手,因此我正在考虑为Redis构建通用ORM。其中一些已经存在,但没有我需要的所有功能(例如,具有管道的事务)和锁。

这是一个可怕的主意吗?我只是在构建一种我不知道的其他地方已经存在的产品吗?

回答:

1.为了避免维护两个不同存储之间的数据一致性的巨大痛苦。看一下Apache Ignite数据网格。使用它可以获得以下好处:

透明缓存

访问数据作为键值存储

使用分布式SQL查询访问与关系数据库相同的数据

全面的交易支持

在存储和性能方面接近线性水平可扩展性

每个“表”(Ignite术语为“缓存”)的可调冗余和一致性特征

它还提供其他服务,例如队列,发布订阅,分布式计算,内置文件系统以及更多有用的东西。

2. 我认为为该用例构建的MongoDB与像Marshal.ts这样的高性能序列化器/ ORM结合起来最适合这里。尽管Redis可用于许多用例,但我认为这在性能,可维护性和其他功能(例如查询数据)方面不会胜过MongoDB。

3.如果要使用Redis作为文档(对象)的存储引擎,为什么不使用像mongoDB这样的noSQL文档数据库并使用内存中的引擎(如果使用ssd的速度不足以仅查找键),并使用该工具经过良好测试的数据库。

我认为最好是找到合适的工具而不是修改工具,而Redis是一个出色的键/值数据库,但是如果您要扩展功能,也许是更合适的工具。



推荐阅读
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文详细介绍了MySQL数据库中的Bin Log和Redo Log,阐述了它们在日志记录机制、应用场景以及数据恢复方面的区别。通过对比分析,帮助读者更好地理解这两种日志文件的作用和特性。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
  • docker镜像重启_docker怎么启动镜像dock ... [详细]
  • Spring Cloud学习指南:深入理解微服务架构
    本文介绍了微服务架构的基本概念及其在Spring Cloud中的实现。讨论了微服务架构的主要优势,如简化开发和维护、快速启动、灵活的技术栈选择以及按需扩展的能力。同时,也探讨了微服务架构面临的挑战,包括较高的运维要求、分布式系统的复杂性、接口调整的成本等问题。最后,文章提出了实施微服务时应遵循的设计原则。 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
author-avatar
mobiledu2502912375
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有