什么是Redis,为什么被领先行业使用?

在这个现代技术时代,没有人喜欢等待很长时间才能看到他们的搜索结果,如果您正在玩游戏,您可能希望查看实时更新的排行榜。所有这些需求都需要一个高性能且快速的解决方案,这有助于我们更快地访问数据,Redis 是使这一切成为可能的解决方案。

什么是Redis?

Redis 实际上代表远程词典服务器。

它基本上是一种数据结构存储,将数据存储在计算机系统的主存储器中,它使用键值对来存储数据,就像 Java 中的 HashMap、Python 中的字典或 JavaScript 中的对象一样,这也是它有时被称为 NoSQL 数据库的原因。

Redis 是一个开源项目,社区蓬勃发展。

Redis的特点

内存存储

通常所有数据库都存储和访问来自硬盘和 SSD 的数据,它们是二级存储器,众所周知,主内存比二级内存快,因为它可以被处理器直接访问。

现在,由于 Redis 将其数据存储在主内存上,因此读取和写入的速度比将数据存储在磁盘上的数据库更快。

什么是Redis,为什么被领先行业使用?

这也是为什么 Redis 在许多应用程序中被用作缓存以快速提供结果的原因,但是我们可以将数据直接存储在主内存或系统缓存中,那么我们就不需要Redis了,对吧?

正如您将看到的,Redis 不仅仅是“缓存”。

高级数据结构

Redis 将其数据存储在键值对中,并且能够使用各种数据结构来存储数据,例如:

  • Strings
  • Lists
  • Sets
  • Sorted Sets
  • Hashes
  • Bit Arrays
  • HyperLogLogs
  • Streams
什么是Redis,为什么被领先行业使用?

如果您希望在不使用 Redis 的情况下将数据直接存储在内存中,这是不可能的,甚至 Memcached,这是另一种非常流行的用作缓存机制的内存键值存储,也只支持字符串,而不支持 Redis 提供的这种数据结构。

作为开发者,你肯定用过其中的一些数据结构,这也让Redis更容易使用和实现。

这里不需要序列化,因为数据直接以您正在编码的数据结构的形式存储,如果不是这种情况,您必须先将数据转换或序列化为字符串,然后再将其存储到任何其他数据存储中或数据库。

坚持

直接使用主内存或系统缓存的另一个缺点是数据易失,一旦没有电源或系统关闭,主存储器上的所有数据都会被清除或清除。

Redis 提供了两种机制来帮助防止这种情况 – 快照和 AOF(仅附加文件),它们基本上是二级内存上 Redis 数据存储的备份,因此如果出现系统故障或断电,通过从磁盘上的这些备份加载数据,它可以调用数据库的当前状态。

复制

Redis 采用主从(primary-replica)架构,数据可以复制到多个副本服务器,这提高了读取性能,因为请求可以在不同的服务器之间拆分,这也有助于在主服务器或主服务器发生中断时更快地恢复。

大力支持

作为一个拥有多元化社区的开源项目,Redis 没有技术限制,因为它基于开放标准,并支持开放数据格式,它还支持丰富的客户端集,支持 40 多种编程语言。

由于 Redis 以各种数据结构的形式将所有内容存储在内存中,并且还提供持久性和复制服务器的能力,因此在与其他无法与 Redis 相同用途的数据库/缓存相比时,它脱颖而出。

这是Redis与其他主要数据库和键值存储的快速比较。

什么是Redis,为什么被领先行业使用?

作为消息代理

这是当有一个频道或一组用户时,他们可以推送或查看消息,例如 Whatsapp 组或 Telegram 频道,这是一个 Pub/Sub 模型,其中有发布者和订阅者。每次创建或发布新消息时,所有订阅者或侦听器都会收到该消息。

Redis 支持此功能并且速度非常快。

作为会话存储

Redis 还用于在应用程序中维护和存储用户的会话。

就像在电子商务应用程序中一样,您希望购物车中的商品即使在您关闭网站时也能保留下来,存储用户元数据(如配置文件和凭据)也很常见,Redis 是这些场景中最受欢迎的选择。

何时避免使用 Redis

使用Redis作为唯一数据库

由于 Redis 是内存中的键值存储,因此所有数据都必须适合内存,它的存储大小取决于系统中存在多少 RAM 或主内存,与硬盘相比,它的大小要小得多,但成本更高。

因此,它不应该用作非常大的应用程序的唯一数据库。

Redis 主要与其他 RDBMS 一起使用,通过提供缓存机制来补充它们。

使用 Redis 作为事务服务器

在内存中存储的另一个陷阱是安全性,尽管Redis提供了持久化解决方案,但它仍然不如真正的事务服务器安全,后者提供重做/撤消日志记录、块校验和、时间点恢复、闪回功能等。

使用 Redis 作为关系数据库

Redis 是一种数据结构服务器,与任何 RDBMS 不同,它不提供查询语言,也不支持任何关系代数,因此,开发人员必须预测所有的数据访问,并需要定义适当的数据访问路径,这意味着失去了很多灵活性。

Redis 扩展起来更复杂

由于 Redis 是同步和单线程的,因此它没有充分利用处理器的所有内核,这使得扩展变得更加困难或复杂,因为必须部署和启动多个 Redis 实例(形成集群)。

Redis 的替代品

Redis 在缓存方面的主要竞争对手是 Memcached,它提供多线程。

MongoDB 是 NoSQL 数据库的另一种选择,因为它使用自己的查询语言提供面向文档的存储。

RabbitMQ 是最常用的消息代理之一,尽管它更复杂,但它比 Redis 更持久和更受欢迎。

Cassandra 是一个分区行存储,其中行被组织成具有所需主键的表,这因其易于扩展的功能和更具容错性而被广泛使用。

最后的想法

如您所见,Redis 基本上是一把瑞士军刀,在现实世界中有多个使用场景,希望使用了Redis,您的系统能够有所改进!

THE END
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容