Redis架构概述
目录
Redis是一个内存中的键值数据存储。Redis是最流行的键值数据存储。世界上所有大型IT品牌都在使用Redis。Amazon Elastic Cache支持Redis,这使Redis非常强大,并且必须知道键值数据存储。在这篇文章中,我将为您简要介绍redis架构。
什么是内存中的键值存储
键值存储是一种存储系统,其中的数据以键和值对的形式存储。当我们说内存中键值存储时,是指键值对存储在主存储器(RAM)中。因此,可以说Redis以键值对的形式将数据存储在RAM中。
在Redis中,键必须是字符串,但值可以是字符串,列表,集合,排序集合或哈希。
这些是Redis键值对的一些示例
= [“网络”,“移动”]
这里的名字和职业是关键。我们在右边有各自的价值观。
Redis与DBMS相比的优缺点
数据库管理系统将所有内容存储在第二个存储中,这使得读取和写入操作非常慢。但是Redis将所有内容存储在主存储器中,这在数据读写中非常快。
主内存有限(比辅助内存小得多,价格昂贵),因此Redis无法存储大文件或二进制数据。它只能存储那些需要快速访问,修改和插入的小文本信息。如果我们尝试写入的数据多于可用内存,那么我们将收到错误消息。
Redis单实例架构
Redis体系结构包含两个主要过程:Redis客户端和Redis Server。
Redis客户端和服务器可以在同一台计算机上,也可以在两台不同的计算机上。
Redis服务器负责将数据存储在内存中。它处理各种管理,并构成体系结构的主要部分。Redis客户端可以是Redis控制台客户端,也可以是任何其他编程语言的Redis API。
如我们所见,Redis将所有内容存储在主内存中。主内存是易失性的,因此一旦重启Redis服务器或计算机,我们将丢失所有存储的数据。因此,我们需要一种数据存储持久性的方法。
Redis持久性
有三种不同的方法可以使Redis持久化:RDB,AOF和SAVE命令。
RDB机制
RDB复制内存中的所有数据并将其存储在辅助存储(永久存储)中。这在指定的时间间隔内发生。因此,您可能会丢失在RDB的上一个快照之后设置的数据。
AOF
AOF记录服务器接收的所有写操作。因此,一切都是持久性。使用AOF的问题在于,它每次执行操作都会写入磁盘,这是一项昂贵的任务,并且AOF文件的大小比RDB文件大。
保存命令
您可以随时使用redis控制台客户端SAVE命令强制redis服务器创建RDB快照。
可以同时使用AOF和RDB以获得最佳持久性结果。
有关Redis持久性的更多信息,请参阅此官方文档。
Redis数据存储的备份和恢复
Redis不提供任何用于数据存储备份和恢复的机制。因此,如果发生硬盘崩溃或任何其他类型的灾难,则所有数据都将丢失。您需要使用一些第三方服务器备份和恢复软件来解决该问题。
如果您在复制环境中使用Redis,则无需备份。
Redis复制
复制是一项涉及许多计算机的技术,以实现容错和数据可访问性。在复制环境中,许多计算机彼此共享相同的数据,因此即使有几台计算机出现故障,所有数据也将可用。
此图显示了基本的Redis复制
主服务器和从服务器是配置为这样的Redis服务器。
所有从机都包含与主机完全相同的数据。每个主服务器最多可以有多个从服务器。当新的从属设备插入到环境中时,主设备会自动将所有数据同步到该从属设备。
所有查询都重定向到主服务器,然后主服务器执行操作。发生写操作时,主设备会将新写入的数据复制到所有从设备。进行大量排序或读取操作时,主服务器将它们分配给从属服务器,以便可以一次执行大量读取和排序操作。
如果从站发生故障,那么环境也将继续工作。当从站再次开始工作时,主站将更新的数据发送到从站。
如果主服务器发生故障,并且它会丢失所有数据,那么您应该将从服务器转换为主服务器,而不是将新计算机作为主服务器。如果我们将一台新计算机作为主计算机,则环境中的所有数据都会丢失,因为新主计算机将没有数据,并使从服务器也将具有零数据(新主计算机会重新同步)。如果主服务器发生故障但数据是持久性的(磁盘未崩溃),则再次启动同一主服务器将使整个环境进入运行模式。
复制帮助我们避免了磁盘故障和其他类型的硬件故障。它还有助于一次执行多个读取/排序查询。
有关Redis复制的更多详细信息,请阅读此官方文档。
Redis复制中的持久性
我们看到了持久性如何解决意外故障并保持后端强大。但是,丢失整个数据的一种方法是,由于电源故障导致整个复制环境崩溃。发生这种情况是因为所有数据都存储在主存储器中。因此,我们在这里也需要持久性。
我们可以配置主机或任何一个从机,以使用任何方法(AOF和RDB)将数据存储在辅助存储中。现在,当再次启动整个环境时,将持久性服务器作为主服务器。
将持久性和复制一起使用,我们所有的数据都是完全安全的,并且可以防止意外故障。
Redis中的聚类
群集是一种可以将数据分片(分割)成多台计算机的技术。主要优势在于,由于群集是计算机的组合,因此可以在群集中存储更多数据。
假设我们有一台具有64GB内存的Redis服务器,即,我们只能有64GB数据。现在,如果我们有10台群集计算机,每个64GB RAM,那么我们可以存储640GB数据。
在上图中,我们可以看到数据被分成四个节点。每个节点都是配置为群集节点的Redis服务器。
如果一个节点发生故障,则整个群集将停止工作。
有关redis集群的更多详细信息,请阅读此官方文档。
集群中的持久性
数据存储在节点的主存储器中。我们需要使每个节点的数据持久化。我们可以使用前面提到的方法(AOF和RDF)来做到这一点。只需配置每个节点的持久性存储。
群集和复制在一起
假设由于磁盘崩溃,我们的节点之一发生故障,然后整个集群停止工作,并且永不恢复。由于数据完全丢失,我们无法恢复节点。
为了避免这种情况,我们可以定期对每个节点进行手动备份。但这是一项艰巨和不适当的任务。因此,我们可以依靠复制来解决此问题。
在这里,我们将每个节点服务器转换为主服务器。我们为每个主人保留一个奴隶。因此,如果任何节点(主节点)发生故障,群集将开始使用从节点来保持群集运行。
Redis客户端
如果您是第一次使用Redis,那么这些链接对安装Redis和学习Redis Client很有帮助。
- 试试Redis:这是一个很棒的在线Redis控制台客户端,它将帮助您学习如何使用Redis控制台客户端。
- Redis快速入门:本文将帮助您安装Redis并开始使用它。
- 常见问题解答:您可以在此链接上查看有关Redis的常见问题。
结论
在撰写本文之前,我试图查找有关Redis体系结构的文章。但是我没找到。因此,我写了一篇关于它的文章。我试图使其非常简单,以便对Redis和DBMS完全陌生的任何人都可以理解它。我希望我把一切都弄清楚了。对问题发表评论。谢谢阅读。