redis的持久化和集群化

1.redis

REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

2. 正文

1. redis的持久化
2. redis的集群
3. java操作redis
4. springboot整合redis

3. redis的持久化

3.1 什么是持久化?

1. 把内存中的数据持久化到磁盘。这个过程就是持久化。 当redis启动时会从磁盘上读取数据并加载到内存。

3.2 持久化的好处

1. 使redis宕机后数据不会丢失。

3.3 redis持久化的方式

1. RDB: 以快照的方式进行持久化。 在一定时间间隔内进行快照。把数据进行保存到磁盘。
2. AOF: 会把每次对redis的写操作命令追加到一个日志尾,当redis启动时则把该日志中的命令执行一遍. 

4. RDB的持久化方式。

4.1 什么时候会触发RDB. ----默认dump.rdb

1. save命令

2. bgsave命令

3. 配置redis配置文件。

4.2 save和bgsave的区别

该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下

执行完成时候如果存在老的RDB文件,就把新的替代掉旧的。我们的客户端可能都是几万或者是几十万,这种方式显然不可取。

bgsave执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体流程如下:

4.3 通过配置文件来触发RDB ----- bgsave命令

4.4 恢复数据

可以把dump.rdb放入到redis启动目录下。 当redis再次被启动时则会加载该数据。

4.5 rdb持久化方式的优缺点

优点:

(1)RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。
(2)bgsave生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。
(3)RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

缺点:

快照持久化期间修改的数据不会被保存,可能丢失数据。数据完整性比较差。

5. AOF持久化方式

提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。

AOF默认是没有开启。需要配置手动开启。

5.2 什么时候会触发aof

当进行写操作则会把写的命令放入appendonly.aof

5.3 aof的优缺点

  1. 优点:

    (1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。
    (2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。
    (3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写
    

    2.缺点

    (1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大.
     (2) 恢复数据时时间要比快照模式慢很多。

6. redis的集群

6.1 redis主从关系

6.2 如何搭建主从关系

1. 准备三台机器 (1 主节点   2 从节点) 为了节省资源 在一个虚拟机上启动三台redis 只是他们的端口号不同

6.3 搭建主从的关系

1.配从不配主
(1)配置redis配置文件 2001(主)  2002(从)  2003(从)
(2)修改rdb持久化文件的路径以及端口

分别其他01 02 03

分别连接不同的redis服务

检验上面上个redis服务之间的关系

上面三个redis服务之间是没有任何主从关系。

可以通过以下命令设置 02 03 跟随01混

输入上面命令后再查询某个节点的关系时 会出现如下结果

通过测试我们知道 主节点可以负责读写操作,但是从节点只能负责读操作。

思考:

如果主节点宕机了,那么从节点会不会上位。还是等待老大的归来。[等待老大归来]

如果新增一个从节点,该从节点会从当前增加的不会添加数据还是会和所有节点数据同步?【同步】

主从关系的缺点:

如果主节点挂掉,则从节点无法上位,导致客户端无法进行写操作了。

6.4 搭建哨兵模式

如何设置哨兵模式启动哨兵

启动哨兵 redis-sentinel sentinel.conf

测试让01宕机 shutdown

思考:

如果01回来了,老大会是谁?

6.5 redis集群搭建---去中心化

上面主从还是哨兵都没有解决写并发量高的情况。

配置三主三从

1. 8001 8002 
2. 7001 7002
3. 9001 9002

port 8001
bind 0.0.0.0
daemonize yes
appendonly yes  必须有aof持久化
# 开启集群
cluster-enabled yes             833行
# 集群的配置文件,该文件自动生成   
cluster-config-file nodes-8001.conf  841行
# 集群的超时时间
cluster-node-timeout 5000         847行

其他上面这些端口号的redis

为上面这些redis分配主从关系以及槽。

---主节点后只有一个从节点
redis-cli --cluster create --cluster-replicas 1 192.168.25.3:7001 192.168.25.3:8001 192.168.25.3:9001  192.168.25.3:7002 192.168.25.3:8002 192.168.25.3:9002

==必须保证aof开启,保证redis中没有数据。==

客户端访问:

redis-cli -c -h 127.0.0.1 -p 8001

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些关于 Redis 持久化的可能面试问题: 1. Redis持久化有哪些方式? Redis持久化有两种方式,一种是 RDB 持久化,一种是 AOF 持久化。 2. RDB 持久化和 AOF 持久化有什么区别? RDB 持久化是将 Redis 在内存中的数据快照保存到磁盘上,而 AOF 持久化则是将 Redis 执行的每条写命令记录到磁盘上。RDB 持久化可以节约磁盘空间,但可能会丢失最近的一些数据,而 AOF 持久化可以保证数据不会丢失,但可能会占用更多的磁盘空间和写入时间。 3. Redis持久化机制是如何保证数据一致性的? Redis持久化机制可以通过在每次写操作后立即同步到磁盘,或者设置定期同步时间来保证数据一致性。 4. Redis持久化可以在运行时进行吗? 可以,Redis持久化可以在运行时进行配置和切换,例如可以在运行时从 RDB 切换到 AOF 持久化,或者从 AOF 切换到 RDB 持久化。 5. Redis持久化会对性能产生影响吗? 会,Redis持久化会增加磁盘 I/O 开销,可能会对写入性能产生一定的影响,但可以通过合理的配置来平衡性能和数据一致性。 6. Redis持久化可以与 Redis 集群一起使用吗? 可以,Redis持久化可以与 Redis 集群一起使用,但需要注意配置文件的设置和数据同步的策略。 总之,Redis持久化是保证数据一致性和可靠性的重要手段,需要根据具体的业务需求和性能要求来选择合适的持久化方式,并进行合理的配置和优。在面试中,还需要了解 Redis 持久化的原理、机制、优缺点、与集群的结合等方面的知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值