首页 > 数据库 >Redis——03 学习

Redis——03 学习

时间:2022-12-19 10:47:04浏览次数:45  
标签:03 AOF Redis 启动 redis 学习 RDB 节点

Redis——03

Redis 持久化策略

Redis 不仅仅是一个内存型数据库,还具备持久化能力。

这个持久化并不是 Redis 数据库读写的主要内容,跟 MySQL 不一样,这个持久化只是为了备份,防止服务器突然宕机或断电做数据恢复而准备的。

1. RDB

RDB 模式是 Redis 的默认模式,可以在指定的时间间隔内生成数据快照(snapshot),默认保存到 dump.rdb 文件中。一定保证在 Redis 在正常关闭前保存当前最后的数据快照,并且 redis 重启后会自动加载 dump.rdb 文件到内存中。

用户可以使用 SAVE(同步)或 BGSAVE (异步)手动保存数据。

也可以通过配置文件 snapshot 内容的 save 选项,让服务器每个一段时间自动执行依次 BGSAVE 命令,

可以通过 save 选项设置多个保存条件,但只要其中任意以一个条件被满足,服务器就会执行 BGSAVE 命令。

image-20221215160145101

优点

RDB 是一个紧凑文件,直接使用就可以还原数据。

数据保存由一个子线程进行保存,不影响父线程。

恢复数据的效率要高于 AOF。

缺点

每次保存,如果 Redis 意外关闭,可能会导致数据丢失。

由于每次保存数据都要创建一个子线程,在数据量较大时可能会比较耗费性能。

2. AOF

AOF 默认是否关闭的,需要在配置文件中开启 AOF(appedonly)。Redis 允许 AOF 和 RDB 同时生效,通过同时存在,AOF 的恢复优先级高于 RDB(优先使用 AOF 的数据恢复)。

原理是,监听执行命令,每当执行了修改数据操作,直接同步到数据库的文件中(类似于日志或命令集)。然后恢复的时候就按照命令集的执行顺序依次进行,从而达到恢复数据的操作。

优点:

相对于 RDB 更加安全,每秒都会记录修改操作。

缺点:

恢复速度很慢。

持久化的文件也很大,随着修改数据操作增加,大小增加。

小结:

到此呢 Redis 的基本使用就完成了。

接下来就是学习 Redis 在软件架构中发挥的作用,以及自身功能的增强。


从 Redis 的数据安全、扩容、性能、高可用各个方面进行考量给出以下几个方向:

  • 主从复制:安全
  • 哨兵:高可用
  • 集群:安全,性能,高可用...

Redis 主从复制

为了保证单一节点可用性,redis 支持主从复制功能,每个节点有 N 个复制品,其中一个是主(master),另外 N - 1 个是从(slave),也就是说 Redis 支持一主多从。

优点:

增加单一节点的健壮性,从而提升整个集群的稳定性。

从节点可以对主节点数据备份,提升容灾能力。

读写分离。主节点一般用作写(具备读能力),从节点只能读。

搭建主从模型:

1. 关闭 redis 服务

2. 备份 Redis 安装目录到一个文件夹(模型文件夹)

  1. 在模型文件夹中创建一个主备份:master --> redis-master
  2. 在模型文件夹中创建两个从备份:slave--> redis-s1、redis-s2

image-20221216094643957

3. 修改三个 redis 的配置文件。

  1. 分配端口号

    • 主:7001
    • 从1:7002
    • 从2:7003
  2. 设置两个从节点的 replicaof 配置

    replicaof <masterip>[主节点的ip地址] <masterport>[主节点的端口号]

    eg: image-20221216100028111

4. 启动运行

先启动主再启动两个从,注意不能在同一个路径下同时启动多个,因为这会造成多个 redis 的 rdb 文件相互覆盖,造成错误。

可以写一个脚本运行:

startup.sh

# 启动主
cd redis-master
bin/redis-server redis.conf
# 启动从1
cd ../redis-s1
bin/redis-server redis.conf
# 启动从2
cd ../redis-s2
bin/redis-server redis.conf

给予 startup shell 脚本运行权限:chmod 755 startup.sh

启动运行:

image-20221216100755473

可以看到 3 个 redis 都已经启动了。

5. 测试环境是否搭建成功

启动3个 xshell 命令界面:分别用 redis-cli 连接主节点和两个从节点(当前的主从复制在一个电脑上

启动 redis 的客户端:(redis-cli 是可执行文件在那个节点启动都行)

bin/redis-cli -h localhost -p 7001

查看复制集信息:

info replication

image-20221216101931511

可以看到此时是连接的主节点,在主节点插入一条数据:name="tom";age=18;sex="man"

看看会不会备份到从节点中:

bin/redis-cli -h localhost -p [7002|7003]

image-20221216102534453

查看所有的 keys 发现有数据,此时如果在从节点插入数据时:

image-20221216102630696

发现是没有权限的当前的是只读副本,无法写入。

image-20221216103011585

标签:03,AOF,Redis,启动,redis,学习,RDB,节点
From: https://www.cnblogs.com/cndada/p/16991602.html

相关文章

  • Redis——05 学习
    Redis——05之前了解了主从复制以及哨兵,接下来了解集群模式。集群(Cluster)先来聊一下前面学的哨兵Sentinel,一般利用哨兵对master节点继续监控,如果master发生异常,则......
  • Redis——04 学习
    Redis——04之前讲了redis的主从复制模型的优点以及搭建效果,但是依然有自己的缺陷,如果主节点宕机,那么其他从节点可能还有运行的,如果此时任意一个从节点升级生了主节点那......
  • Redis——06 学习
    Redis——06将Redis的基本使用以及三种模式进行了学习和了解。接下来就学习如何在Java中以及SpringBoot框架中使用Redis。JedisRedis在Java上的操作多半是集......
  • 003.Mac jdk版本切换
    Macjdk版本切换查看当前jdk版本。java-version2.查看电脑中所有的jdk版本。/usr/libexec/java_home-V调整环境变量。open-e.bash_profile保存环境......
  • Markdown学习
     标题#+标题名字+空格+回车#号数量代表几级标题字体helloworld!!两边都加**变成粗体helloworld!!两边都加*变成斜体helloworld!!三个*变成斜体加粗helloworld!!两边......
  • delphi D11编程语言手册 学习笔记(P424-477) 泛型
      这本书可以在Delphi研习社②群256456744的群文件里找到.书名:Delphi11AlexandriaEdition.pdf 泛型在C++中叫做类型模板(templateclasses),单从字面上理......
  • pycaret学习之异常检测
    异常检测是识别与大多数数据明显不同的稀有物品、事件或观察结果的任务。通常,异常项目会转化为某种问题,例如银行欺诈、结构缺陷、医疗问题或文本中的错误。存在三大类异常......
  • 高性能Redis服务器注意事项
    摘要昨天简单理了理安装与配置相关的但是很多比较重要的核心性能参数并没有进行学习与探讨就基于昨天理解不深入的地方进行进一步的学习与了解希望能够提高Redis-Serve......
  • Redis7.0.7的简单安装与学习
    Redis7.0.7的简单安装与学习摘要2022.12.18世界杯决赛另外是我感染奥密克戎第五天.高烧已经没了,但是嗓子巨疼.睡不着觉,肝胆学习一下最新的Redis7.0.7第一部分......
  • spring的学习
    构造器的注入  这是原始的方法的注入  构造器注入  可以通过两种方法来进行注入 ......