• Redis数据库角色:不只是缓存,还可以作为主数据库!


    一、Redis 作为主数据库是如何工作的?

    Redis最初是一个缓存数据库,到后来才演变为一个主数据库(Redis入门指南)。目前构建的许多应用程序都使用Redis作为主数据库。但是,大多数Redis服务提供商仅支持Redis作为缓存,却不支持Redis作为主数据库。这意味着,除了使用Redis之外,企业还需要一个单独的数据库,例如DynamoDB。这不仅会增加复杂性、降低延迟,还会阻止企业充分发挥Redis的潜力。

    Redis连续三年被StackOverflow评为最受喜爱的数据库。目前已经启动了超过20亿个Redis Docker容器。网络上有非常多的关于Redis的专业知识,当Redis开发人员陷入困境时,有非常多的资源书籍、教程、博客文章等来帮助开发人员解决问题。

    当前也有数百个Redis客户端库,涵盖了所有主要的编程语言,甚至一些晦涩难懂的语言。在许多语言中,开发人员可以从各种库中进行选择,以获得正确的样式和抽象级别。Redis是一个具有数据大小范围的数据库,从几兆字节到数百兆字节不等。

    借助Redis Enterprise,用户可以将Redis作为单个系统中的内存缓存和主数据库,从而消除两个独立系统之间的复杂性和延迟。不仅如此,用户还可以将它用作多模型主数据库,使用户能够在Redis之上构建现代应用程序并构建基于微服务的低延迟架构

    在这里插入图片描述

    与其依赖单独的数据库和缓存,不如利用Redis Enterprise 的原生特性(Redis模块,例如

    • 用于收集和分发数据的流
    • RedisJSON用于存储JSON文档
    • RediSearch二级索引
    • 用于复杂关系的RedisGraph
    • RedisTimeSeries用于应用程序监控
    • RedisBloom用于游戏、欺诈检测和排行榜
    • RedisAI用于实时 AI 特征存储和推理

    通过自动扩展、企业集群和主动-主动地理分布利用上述所有功能。

    在这里插入图片描述

    二、Redis可扩展性和内置数据结构

    扩展缓存和数据库通常很复杂的。每个数据层的扩展方式不同,会在不同的时间到达基础设施并获得优化机会。即使架构的任何给定部分可能很快,但每个项目都会增加某种延迟,无论是通过数据库本身还是通过项目之间的连接。因此,减少移动部件的数量可以减少延迟,转到单个数据存储也能消除多次内部网络遍历。最后,使用单个数据存储开发应用程序只需要一个编程接口。因此,开发人员只需要了解单个数据库的复杂性,而不是数据库和缓存。这降低了开发过程中上下文切换的成本。

    1.使用Redis进行扩展

    Redis 企业版(Redis Enterprise)的Active-Active部署对于实现 99.999% 的可靠性和全球可扩展性是不可或缺的。这意味着可以将单个数据集复制到分布在广泛地理区域的许多集群中,每个集群仍然能够完全接受读取和写入。

    Redis Enterprise使用无冲突复制数据类型 (CRDT) 自动解决数据库级别的任何冲突,并且不会丢失数据。广泛分布集群可在本地地理延迟下保持数据可用,能够增加弹性以应对灾难性的基础设施故障。

    在这里插入图片描述

    2.Redis中的内置数据结构

    许多应用程序的数据需求相对简单,可以通过Redis内置的数据结构轻松支持。Redis使用长期建立的高效模式来实现基本数据结构。对于用户而言,Redis提供了一个可扩展的引擎,允许模块只添加所需的功能,而不再添加其他功能。这种方法展现了Redis的持久性——Redis让用户可以通过定期快照实现持久性,或者通过仅附加文件 (AOF)一直提高到写入时持久性。Redis可以根据您的用例在性能和耐用性之间做出最佳权衡。

    三、面向未来的数据库性能

    未来,企业对数据库实现的绩效会有越来越高的期望。企业绝不可可能说:“我希望我们的数据库能慢一点。” 相反,在考虑构建现代应用程序的基础上,数据库软文应该是实时的、易于开发的、操作优雅的、可扩展的和面向未来的。

    Redis 虽然提供了出色的数据库缓存,但扩展Redis作为主数据库的角色更应该被用户看到,它可以让开发人员在构建未来的应用程序实现领先。

  • 相关阅读:
    关于Redis集群的一些问题的理解
    JAVA面试(三)
    这可能是最全面的Python入门手册了!
    12 行列式01--- 定义、计算 与性质: n级行列式的性质、行列式计算
    【unity实战】Unity实现2D人物双击疾跑
    Python之人机猜拳游戏
    论文笔记:Localizing Cell Towers fromCrowdsourced Measurements (intro 部分)
    将一个(768,1)的张量转换为(1024,)
    M的编程备忘录之C++——类和对象(上)
    [附源码]JAVA毕业设计衡师社团管理系统(系统+LW)
  • 原文地址:https://blog.csdn.net/hongcloudtech/article/details/127441343