Redis 代表 REmote DIctionary Server(链接位于 IBM 外部),是开源的内存 NoSQL 键/值存储库,主要用作应用缓存或快速响应数据库。 Redis 将数据存储在内存中,而不是硬盘或固态硬盘 (SSD) 中,因此提供无与伦比的速度、可靠性和性能。
当应用依赖于外部数据源时,这些数据源的延迟和吞吐量可能会造成性能瓶颈,特别是当流量增加或应用扩展时。 在这些情况下,提高性能的一种方法是在物理上更靠近应用的内存中存储和操作数据。 Redis 正是为了执行该任务而构建的:它将所有数据统统存储在内存中 — 提供最快的数据读写性能,并提供内置的复制能力,允许您将数据保存在距离用户更近的地方,以实现最低延迟。
其他值得注意的 Redis 特性包括支持多种数据结构、内置 Lua 脚本、多级别磁盘持久性和高可用性。
Redis 不同于作为辅助组件专门为提高应用性能而设计的“传统”NoSQL 数据存储库。 以下是 Redis 的一些差异化功能:
同样,不同于 MongoDB 和 PostgreSQL 等 NoSQL 数据库,Redis 将数据存储在服务器的主存储器中,而不是硬盘和固态硬盘上。 这将大幅缩短执行读写操作时的响应时间。 同时还有助于确保高可用性(与 Redis Sentinel 结合使用,见下文)以及服务和应用工作负载的可扩展性。
Redis 可以对那些相比普通任务而言需要 Web 客户端花费更长时间来处理的任务进行排队。 多进程任务排队在当今基于 Web 的许多应用中都很常见,Redis 可以轻松实施使用 Python 编写的自动化进程,这些进程在请求/响应周期的后台运行。
虽然从技术的角度来看,Redis 是一个键/值存储库,但它却是真正的数据结构服务器,支持多种数据类型和结构,包括:
Redis 具有本机客户端集成能力,可帮助开发人员操作并与他们的数据交互。 目前在 Redis 客户端库中拥有超过 100 种不同的开源客户端,开发者可以轻松添加新的集成来支持额外的功能和编程语言。
Redis 一些最重要或值得注意的特性包括:
Redis Sentinel(链接位于 IBM 外部)是独立的分布式系统,可以帮助开发人员校准他们的实例,使其对客户端高度可用。 Sentinel 使用一系列监控进程、通知和自动故障转移工具,可在主从实例出现问题时通知用户,同时在必要时自动为应用重新配置新连接。
Redis Cluster(链接位于 IBM 外部)是 Redis 的分布式实现,可以自动在多个节点中分割数据集。 这支持更高的数据库部署性能和可扩展性,同时确保在节点子集无法与集群其他部分通信的情况下继续运作。
由于 Redis 支持使用发布和订阅 (Pub/Sub) 命令(链接位于 IBM 外部),因此,用户可以跨越他们的全部应用和服务来设计高性能交谈和消息传递服务。 这包括能够使用列表数据结构来运行原子操作和阻塞功能。
Redis 使用持久性磁盘存储器(链接位于 IBM 外部),旨在应对进程中断和网络瓶颈。 Redis 可以通过定期拍摄数据快照,并在数据发生变化时追加更改,实现数据集持久化。 然后,可将 Redis 配置为按需或按既定周期自动生成这些数据库备份,以确保数据库的耐久性和完整性。
Redis 和 Memcached 都是开源的内存数据存储库,但它们的优点和特性不同。 对于需要较少内存资源的简单应用来说,Memcached 通常是首选,但在以序列化形式存储数据时,它具有局限性。 Redis 对数据结构的使用,让其在处理大型数据集时可提供更强大的功能,并且在特定的应用场景中更能调优缓存内容,同时保持更高的效率。
Redis 是内存中的数据库存储库,MongoDB 则被称为磁盘上的文档存储库。 尽管这两个解决方案是为不同目的而构建的,但它们经常一起使用,以最大限度地提高 NoSQL 数据库的速度和效率。 由于具备缓存能力,Redis 可以非常快速地定位所需的数据,作为摄取缓冲区使 MongoDB 更高效,并能够近乎实时地管理更频繁的文档更新。 由于 MongoDB 具有存储大量数据的能力,而 Redis 则能够更迅速地处理数据,因此,这两者的结合使用,可以为各种用例提供强大的数据库管理解决方案。
以下是企业可从 Redis 使用中获益的一些常见用例:
开始使用 Redis 是一个相当无缝的过程,尤其是在使用 Redis Desktop Manager (RDM)(链接位于 IBM 外部)的情况下。 此外,由于 Redis 和 RDM 都是开源项目,因此,活跃的开发社区一直在努力提高它们的运行效率,并不断发展相关支持工具和集成。
有关安装和设置 Redis 的更多信息,请参阅社区中的设置说明(链接位于 IBM 外部)。
了解如何为云原生应用选择正确的数据库
您可以在此找到关于 NoSQL 的一切须知内容;NoSQL 是一种数据库设计,它提供比传统数据库更高的灵活性。
本指南探讨了企业数据库管理解决方案中包含的 MongoDB 的特性和优势。