Redis5版本集群搭建 (3)

always:服务器每写入一个命令,就调用一次fdatasync,将缓冲区里面的命令写入到硬盘。这种模式下,服务器出现故障,也不会丢失任何已经成功执行的命令数据

everysec(默认):服务器每一秒重调用一次fdatasync,将缓冲区里面的命令写入到硬盘。这种模式下,服务器出现故障,最多只丢失一秒钟内的执行的命令数据

no:服务器不主动调用fdatasync,由操作系统决定何时将缓冲区里面的命令写入到硬盘。这种模式下,服务器遭遇意外停机时,丢失命令的数量是不确定的,no 选项并不能给服务器性能带来多大的提升,而且也会增加系统奔溃时数据丢失的数量。

运行速度:always的速度慢,everysec和no都很快

3.2.3 重写机制

AOF文件过大,合并重复的操作,AOF会使用尽可能少的命令来记录

重写过程

(1)folk一个子进程负责重写AOF文件

(2)子进程会创建一个临时文件写入AOF信息

(3)父进程会开辟一个内存缓冲区接收新的写命令

(4)子进程重写完成后,父进程会获得一个信号,将父进程接收到的新的写操作由子进程写入到临时文件中

(5)新文件替代旧文件

重写的本质:就是将操作同一个键的命令,合并。从而减小AOF文件的体积

重写触发机制

 (1)手动:

 客户端向服务器发送BGREWRITEAOF命令

 (2)自动:

 配置文件中的选项,自动执行BGREWRITEAOF命令

auto-aof-rewrite-min-size :触发AOF重写所需的最小体积:只要在AOF文件的体积大于等于size时,才会考虑是否需要进行AOF重写,这个选项用于避免对体积过小的AOF文件进行重写

auto-aof-rewrite-percentage :指定触发重写所需的AOF文件体积百分比:当AOF文件的体积大于auto-aof-rewrite-min-size指定的体积,并且超过上一次重写之后的AOF文件体积的percent %时,就会触发AOF重写。(如果服务器刚刚启动不久,还没有进行过AOF重写,那么使用服务器启动时载入的AOF文件的体积来作为基准值)。将这个值设置为0表示关闭自动AOF重写。

优点

写入机制,默认fysnc(手工同步)每秒执行,性能很好不阻塞服务,最多丢失一秒的数据;

重写机制,优化AOF文件;

如果误操作了(FLUSHALL等),只要AOF未被重写,停止服务移除AOF文件尾部FLUSHALL命令,重启Redis,可以将数据集恢复到FLUSHALL 执行之前的状态。

缺点

相同数据集,AOF文件体积较RDB大了很多;

恢复数据库速度较RDB慢(文本,命令重演)

四、集群 4.1 redis集群简介 4.1.1 集群的概念

  所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。

4.1.1.1 使用redis集群的必要性

  问题:我们已经部署好了redis,并且能启动一个redis,实现数据的读写,为什么还要学习redis集群?

  答:(1)单个redis存在不稳定性。当redis服务宕机了,就没有可用的服务了。

    (2)单个redis的读写能力是有限的。

  总结:redis集群是为了强化redis的读写能力。

4.1.1.2 如何学习redis集群

说明:(1)redis集群中,每一个redis称之为一个节点。

    (2)redis集群中,有两种类型的节点:主节点(master)、从节点(slave)。

    (3)redis集群,是基于redis主从复制实现。

所以,学习redis集群,就是从学习redis主从复制模型开始的。

4. 2 redis主从复制 4.2.1 概念

  主从复制模型中,有多个redis节点。

  其中,有且仅有一个为主节点Master。从节点Slave可以有多个。

  只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步。

4.2.2 特点

  (1)主节点Master可读、可写.

  (2)从节点Slave只读。(read-only)

  因此,主从模型可以提高读的能力,在一定程度上缓解了写的能力。因为能写仍然只有Master节点一个,可以将读的操作全部移交到从节点上,变相提高了写能力。

4.2.3 基于配置实现

需求

主节点:6380

从节点:6381、6382

配置步骤

(1)在/usr/local目录下,创建一个/redis/master-slave目录

mkdir -p /usr/local/redis/master-slave

(2)在master-slave目录下,创建三个子目录6380、6381、6382

mkdir 6380 6381 6382

(3)依次拷贝redis解压目录下的redis.conf配置文件,到这三个子目录中

cp /usr/local/src/redis-5.0.4/redis.conf 6380/ cp /usr/local/src/redis-5.0.4/redis.conf 6381/ cp /usr/local/src/redis-5.0.4/redis.conf 6382/

(4)进入6380目录,修改redis.conf,将port端口修改成6380即可

(5)进入6381目录,修改redis.conf,将port端口改成6381,同时指定开启主从复制

# 主节点ip 主节点端口 replicaof 127.0.0.1 6380

(6)进入6382目录,修改redis.conf,将port端口改成6382,同时指定开启主从复制

测试

(1)打开三个shell窗口,在每一个窗口中,启动一个redis节点。查看日志输出。(不要改成后台模式启动,看不到日志,不直观)

(2)另外再打开三个shell窗口,在每一个窗口中,登陆一个redis节点

(3)在主节点6380上,进行读写操作,操作成功

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypzfx.html