Redis的持久化存储和集群管理操作

news2024/10/22 12:18:00

Redis 的持久化存储和集群

一、引言

Redis 是一个开源的内存数据结构存储系统,被广泛应用于缓存、消息队列、排行榜等场景。然而,由于数据存储在内存中,一旦服务器重启或出现故障,数据就会丢失。为了解决这个问题,Redis 提供了两种持久化存储方式:RDB(Redis Database)和 AOF(Append Only File)。同时,为了提高系统的可扩展性和可用性,Redis 还支持集群模式。

二、Redis 的持久化存储

(一)RDB 持久化

  1. 工作原理

    • RDB 持久化是通过创建一个内存快照来保存 Redis 数据库在某个时间点的状态。这个快照文件可以在 Redis 服务器重启时加载,从而恢复数据库的状态。

    • Redis 会在指定的时间间隔内或者当满足特定条件时(如执行了一定数量的写操作),自动触发 RDB 持久化。

  2. 优点

    • 生成的 RDB 文件紧凑,体积小,便于备份和恢复。

    • 恢复数据的速度非常快,因为只需要将 RDB 文件加载到内存中即可。

  3. 缺点

    • 由于是在特定时间点创建快照,所以可能会丢失在快照创建之间的数据。

    • 当数据量较大时,创建快照可能会导致 Redis 服务器暂时停止服务,影响性能。

  4. 配置方法

    • 在 Redis 配置文件中,可以通过以下参数来配置 RDB 持久化:

      • save <seconds> <changes>:指定在多少秒内有多少个键被修改时触发 RDB 持久化。例如,save 900 1表示在 900 秒内至少有 1 个键被修改时触发 RDB 持久化。

      • dbfilename <filename>:指定 RDB 文件的文件名。

      • dir <directory>:指定 RDB 文件的存储目录。

(二)AOF 持久化

  1. 工作原理

    • AOF 持久化是通过记录 Redis 服务器执行的所有写命令来保存数据库的状态。这些写命令以文本形式追加到 AOF 文件中。当 Redis 服务器重启时,可以通过重新执行 AOF 文件中的写命令来恢复数据库的状态。

    • Redis 可以在每次执行写命令时立即将命令追加到 AOF 文件中,也可以设置为每隔一段时间追加一次。

  2. 优点

    • 可以提供更好的数据持久性,因为它记录了所有的写操作,不会丢失数据。

    • AOF 文件易于理解和解析,可以用于数据恢复和故障排查。

  3. 缺点

    • AOF 文件通常比 RDB 文件大,因为它记录了所有的写操作。

    • 恢复数据的速度相对较慢,因为需要重新执行所有的写命令。

  4. 配置方法

    • 在 Redis 配置文件中,可以通过以下参数来配置 AOF 持久化:

      • appendonly yes:开启 AOF 持久化。

      • appendfsync always|everysec|no:指定 AOF 文件的同步方式。always表示每次执行写命令时立即同步到 AOF 文件;everysec表示每秒同步一次;no表示由操作系统决定何时同步。

      • no-appendfsync-on-rewrite no|yes:在进行 AOF 重写时是否禁止同步 AOF 文件。如果设置为yes,可以提高 AOF 重写的性能,但可能会导致数据丢失。

      • auto-aof-rewrite-percentage <percentage>:指定 AOF 文件相对于上次重写后的增长比例,当增长比例达到这个值时,Redis 会自动触发 AOF 重写。例如,auto-aof-rewrite-percentage 100表示当 AOF 文件大小是上次重写后的两倍时,触发 AOF 重写。

      • auto-aof-rewrite-min-size <size>:指定触发 AOF 重写的最小文件大小。例如,auto-aof-rewrite-min-size 64mb表示当 AOF 文件大小大于 64MB 时,触发 AOF 重写。

(三)选择合适的持久化方式

  1. 根据数据重要性选择

    • 如果数据非常重要,不能丢失,那么可以选择 AOF 持久化。因为 AOF 记录了所有的写操作,可以保证数据的完整性。

    • 如果数据相对不重要,或者可以接受一定程度的数据丢失,那么可以选择 RDB 持久化。RDB 文件体积小,恢复速度快,适用于对性能要求较高的场景。

  2. 根据性能需求选择

    • RDB 持久化在创建快照时可能会导致 Redis 服务器暂时停止服务,影响性能。如果对性能要求非常高,可以选择 AOF 持久化,因为它可以在后台进行重写操作,不会影响服务器的正常运行。

    • 但是,AOF 文件通常比 RDB 文件大,恢复数据的速度也相对较慢。如果对恢复速度要求非常高,可以选择 RDB 持久化。

  3. 结合使用

    • 也可以结合使用 RDB 和 AOF 持久化,以充分发挥两者的优势。例如,可以定期使用 RDB 持久化创建快照,同时使用 AOF 持久化记录所有的写操作。这样,在恢复数据时,可以先加载 RDB 文件,然后再重放 AOF 文件中的写命令,从而提高恢复速度和数据的完整性。

三、Redis 的集群

(一)集群的概念和优势

  1. 概念

    • Redis 集群是由多个 Redis 节点组成的分布式系统。这些节点可以分布在不同的服务器上,通过网络进行通信和协作。

    • Redis 集群中的每个节点都负责存储一部分数据,并可以处理客户端的请求。当客户端向集群发送请求时,Redis 会根据请求的键值对计算出应该由哪个节点来处理这个请求,并将请求转发到相应的节点。

  2. 优势

    • 可扩展性:可以通过添加更多的节点来扩展集群的存储容量和处理能力。

    • 高可用性:如果某个节点出现故障,其他节点可以继续处理请求,不会导致整个系统的瘫痪。

    • 负载均衡:请求可以均匀地分布到各个节点上,避免单个节点负载过高。

(二)集群的搭建

  1. 准备工作

    • 安装多个 Redis 服务器,并确保它们可以相互通信。

    • 为每个 Redis 服务器创建一个配置文件,指定不同的端口号和数据存储目录。

  2. 创建集群

    • 使用 Redis 提供的redis-cli工具来创建集群。可以使用以下命令来创建一个包含六个节点的集群:

redis-cli --cluster create <node1_ip>:<node1_port> <node2_ip>:<node2_port> <node3_ip>:<node3_port> <node4_ip>:<node4_port> <node5_ip>:<node5_port> <node6_ip>:<node6_port> --cluster-replicas 1
  • 这个命令会将六个节点组成一个集群,并为每个主节点分配一个从节点。

  1. 验证集群

    • 使用redis-cli连接到集群中的任意一个节点,并执行一些命令来验证集群是否正常工作。例如,可以使用setget命令来设置和获取键值对,然后检查结果是否正确。

(三)集群的操作和管理

  1. 添加和删除节点

    • 可以使用redis-cli工具来添加和删除集群中的节点。例如,可以使用以下命令来添加一个新的节点:

redis-cli --cluster add-node <new_node_ip>:<new_node_port> <existing_node_ip>:<existing_node_port>
  • 这个命令会将新的节点添加到集群中,并将其分配给一个主节点作为从节点。

  • 要删除一个节点,可以使用以下命令:

redis-cli --cluster del-node <node_ip>:<node_port> <node_id>
  • 这个命令会从集群中删除指定的节点,并将其负责的数据迁移到其他节点上。

  1. 数据迁移

    • 当添加或删除节点时,可能需要进行数据迁移。Redis 集群会自动将数据从一个节点迁移到另一个节点,以保持数据的均衡分布。

    • 可以使用redis-cli工具来监控数据迁移的进度。例如,可以使用以下命令来查看数据迁移的状态:

redis-cli --cluster info <node_ip>:<node_port>
  1. 故障转移

    • 如果主节点出现故障,Redis 集群会自动进行故障转移。从节点会被提升为主节点,并开始处理客户端的请求。

    • 可以使用redis-cli工具来监控故障转移的过程。例如,可以使用以下命令来查看集群的状态:

redis-cli --cluster check <node_ip>:<node_port>

四、示例

(一)RDB 持久化示例

以下是一个简单的 Redis 配置文件示例,展示了如何配置 RDB 持久化:

# 开启 RDB 持久化
save 900 1
save 300 10
save 60 10000
​
# 指定 RDB 文件的文件名和存储目录
dbfilename dump.rdb
dir /var/lib/redis

在这个配置文件中,Redis 会在 900 秒内至少有 1 个键被修改、300 秒内至少有 10 个键被修改或者 60 秒内至少有 10000 个键被修改时触发 RDB 持久化。RDB 文件的文件名是dump.rdb,存储在/var/lib/redis目录下。

(二)AOF 持久化示例

以下是一个简单的 Redis 配置文件示例,展示了如何配置 AOF 持久化:

# 开启 AOF 持久化
appendonly yes
​
# 指定 AOF 文件的同步方式为每秒同步一次
appendfsync everysec
​
# 禁止在 AOF 重写时同步 AOF 文件,以提高性能
no-appendfsync-on-rewrite yes
​
# 当 AOF 文件大小是上次重写后的两倍时,触发 AOF 重写
auto-aof-rewrite-percentage 100
​
# 当 AOF 文件大小大于 64MB 时,触发 AOF 重写
auto-aof-rewrite-min-size 64mb

在这个配置文件中,Redis 会开启 AOF 持久化,并将 AOF 文件的同步方式设置为每秒同步一次。在进行 AOF 重写时,会禁止同步 AOF 文件,以提高性能。当 AOF 文件大小是上次重写后的两倍或者大于 64MB 时,会触发 AOF 重写。

(三)Redis 集群示例

以下是一个简单的 Redis 集群创建和验证的示例:

  1. 安装多个 Redis 服务器,并为每个服务器创建一个配置文件。例如,以下是一个节点的配置文件示例:

port 7000
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 5000
appendonly yes

在这个配置文件中,指定了 Redis 服务器的端口号为 7000,开启了集群模式,并指定了集群配置文件和节点超时时间。同时,开启了 AOF 持久化。

  1. 使用redis-cli工具创建集群:

redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

这个命令会将六个节点组成一个集群,并为每个主节点分配一个从节点。

  1. 验证集群:

使用redis-cli连接到集群中的任意一个节点,并执行一些命令来验证集群是否正常工作。例如,可以使用以下命令来设置和获取键值对:

redis-cli -c -p 7000
set key value
get key

如果能够正确设置和获取键值对,说明集群正常工作。

五、总结

Redis 的持久化存储和集群功能为用户提供了强大的数据管理和高可用性解决方案。通过选择合适的持久化方式,可以保证数据的安全性和完整性;通过搭建集群,可以提高系统的可扩展性和可用性。在实际应用中,需要根据具体的需求和场景来选择合适的方案,并进行合理的配置和管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lfsr32

首先分析 Lfsr5 首先要理解什么是抽头点&#xff08;tap&#xff09;&#xff0c;注意到图中有两个触发器的输入为前级输出与q[0]的异或&#xff0c;这些位置被称为 tap position.通过观察上图&#xff0c;所谓抽头点指的就是第5个&#xff0c;第3个寄存器的输入经过了异或逻辑…

nosql课本习题

nosql题目 1. 文档数据库相比其他 NoSQL 的突出优势和特点是什么&#xff1f; 答案&#xff1a; 文档数据库的突出优势在于它的灵活性和可扩展性。不同于传统的关系型数据库&#xff0c;文档数据库允许存储半结构化和非结构化数据&#xff0c;每个文档可以有不同的字段&#x…

Django操作数据库

Django操作数据库 1、ORM框架2、ORM-创建数据库3、ORM-连接数据库4、ORM-操作表4.1、类创建表4.2、修改表结构4.2.1、删除表结构4.2.2、新增表结构 5、ORM-增删改查5.1、新增数据5.2、删除数据5.3、查询数据5.4、更新数据 1、ORM框架 Django开发操作数据库很简单&#xff0c;内…

沈阳乐晟睿浩科技有限公司技术创新,奠定坚实基础

在当今数字经济蓬勃发展的时代&#xff0c;电子商务以其独特的魅力和无限潜力&#xff0c;正深刻改变着人们的消费习惯与商业模式。在这场变革中&#xff0c;沈阳乐晟睿浩科技有限公司凭借其敏锐的市场洞察力、强大的技术实力以及前瞻性的战略眼光&#xff0c;迅速崛起&#xf…

Java爬虫:获取数据的入门详解

在数字化时代&#xff0c;数据已成为最宝贵的资产之一。无论是市场研究、客户洞察还是产品开发&#xff0c;获取大量数据并从中提取有价值的信息变得至关重要。Java&#xff0c;作为一种成熟且功能强大的编程语言&#xff0c;为编写爬虫提供了强大的支持。Java爬虫可以帮助我们…

月入30万!用AI做养生赚麻了,全网最全最详细的变现教程

现在不养生&#xff0c;将来养医生&#xff01; 秋冬将至&#xff0c;又到了宝子们养生意识季节性觉醒的时间了&#xff0c;这时候&#xff0c;网上关于养生的内容搜索量激增&#xff0c;也催生了AI养生自媒体创作的热潮。 比如这位博主采用养生文案搭配AI简笔画的形式&#…

拥抱新质生产力 | 大势智慧亮相第12届中国测绘地理信息技术装备博览会

10月15日—17日&#xff0c;由中国测绘学会主办的2024中国测绘地理信息科学技术年会暨中国测绘地理信息技术装备博览会在河南省郑州市隆重举行。 10月15日&#xff0c;第12届中国测绘地理信息技术装备博览会在郑州国际会展中心盛大开幕。 大势智慧CTO张帆受邀出席博览会开幕式…

pdman在关系图中展示表的后排字段

1.当想在关系图中通过箭头指向来表明表与表之间的关系时&#xff0c;发现对应关联表的关联字段不展示&#xff08;原表该字段展示在后排&#xff0c;关系图只展示前排字段&#xff09; 2.找到对应表&#xff0c;对该字段手动设置可见 3.保存后再次进入关系图即可看到 3.1 3.2…

LabVIEW程序员可以从哪几个方面提升自己?有没有详细的路线图?

作为一名LabVIEW程序员&#xff0c;要在快速发展的技术领域保持竞争力并不断提升自己&#xff0c;需要从多个方面进行持续的学习和实践。下面我将为你详细说明LabVIEW程序员提升自己的几个关键方向&#xff0c;并给出具体的成长路线图。 1. 夯实基础&#xff1a;掌握LabVIEW的…

解决mac ssh端终端只有黑白颜色的问题

主要是因为没有开启颜色配置。修改下文件即可 cd ~ vi .zshrc 内容如下 export LS_OPTIONS--colorauto export CLICOLORYes export LSCOLORSExgxcxdxcxegedabagGxGx 关闭终端后重登录&#xff0c;这下有颜色了好看了 配色&#xff1a;目录蓝 可执行绿 软链青 颜色配置 详…

MyBatis入门之一对一关联关系(示例)

【图书介绍】《SpringSpring MVCMyBatis从零开始学&#xff08;视频教学版&#xff09;&#xff08;第3版&#xff09;》-CSDN博客 《SpringSpring MVCMyBatis从零开始学(视频教学版)&#xff08;第3版&#xff09;》(杨章伟&#xff0c;刘祥淼)【摘要 书评 试读】- 京东图书 …

CTFHUB技能树之SQL——字符型注入

开启靶场&#xff0c;打开链接&#xff1a; 直接指明是SQL字符型注入&#xff0c;但还是来判断一下 &#xff08;1&#xff09;检查是否存在注入点 1 and 11# 返回正确 1 and 12# 返回错误 说明存在SQL字符型注入 &#xff08;2&#xff09;猜字段数 1 order by 2# 1 order…

InnoDB引擎(架构,事务原理,MVCC详细解读)

目录 架构分析 逻辑存储结构​ 内存结构​ Buffer Pool​ ChaneBuffer 自适应哈希​ LogBuffer​ 磁盘结构​ 后台线程​ 事务原理​ redolog日志 undolog日志​ MVCC​ 三个隐藏字段​ undolog版本链 readview​ RC(读已提交原理分析)​ RR(可重复读原理分析…

MySQL 数据库的备份与恢复:最佳实践与深度探讨

MySQL 数据库的备份与恢复&#xff1a;最佳实践与深度探讨 在现代应用程序和企业系统中&#xff0c;数据库是其核心组件之一&#xff0c;负责存储和管理大量的关键数据。MySQL 作为一种广泛应用的开源数据库管理系统&#xff0c;支持高性能和可扩展性&#xff0c;被广泛应用于…

aws 把vpc残留删除干净

最近忘了把vpc 删干净导致又被收了冤大头钱 在删除vpc 的收发现又eni在使用&#xff0c;但是忘了是哪个资源在占用 先用命令行把占用的资源找出来停掉 使用 AWS 命令行界面&#xff08;CLI&#xff09;来查看 VPC 的使用情况 列出子网&#xff1a; aws ec2 describe-subnets …

每日一道算法题(Leetcode 20)

Whats past is prologue. 凡是过去&#xff0c;皆为序章。 题目 分析 1. 我们可以用栈的结构来解决这道题。 2. 我们使用while循环&#xff0c;每次读取字符串中一个元素进行操作&#xff0c;直到最后读取到 \0为止。 3. 如果遇见 (, [ ,{ 这三种左括号&#xff0c;则把该左…

SWAT-MODFLOW地表水与地下水耦合技术——建议收藏!

原文链接&#xff1a;SWAT-MODFLOW地表水与地下水耦合技术——建议收藏&#xff01;https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247623317&idx1&sn87516da827641ffd124519f929e5da26&chksmfa8da372cdfa2a643b7b806b806b31e025382b9896723d891ffd030…

【Dash】feffery_antd_components 按钮组件的应用

一、feffery_antd_componenet 中的 AntdFloatButton 和 AntdFloatButtonGroup AntdFloatButton 和 AntdFloatButtonGroup 是两个用于创建悬浮按钮和悬浮按钮组的组件。 AntdFloatButton 是单个悬浮按钮组件&#xff0c;它提供了多种属性来定义按钮的外观及行为。AntdFloatBut…

2024双十一最建议买的东西有哪些?双11购物清单大全分享

双十一即将来临&#xff0c;各大品牌都推出了令人心动的优惠活动&#xff0c;让我们能够以更加实惠的价格拥有心仪的好物。其中数码家电的产品&#xff0c;也是迎来了一波降价高潮&#xff0c;因此对于数码家电爱好者而言&#xff0c;双十一是入手的绝佳时机&#xff01;本期我…

HTML+CSS实现点赞效果

效果演示 HTMLCSS实现点赞效果 HTML <div class"heart-container" title"Like"><input type"checkbox" class"checkbox" id"Give-It-An-Id"><div class"svg-container"><svg viewBox&qu…