Redis基本概念及配置(事务、持久化、主从复制、哨兵模式)

Redis事务

Multi、Exec、discard

  • 从输入Mulit命令开始,输入的命令都会进入命令队列中,但不会执行,直到输入Exec后,Redis将之前的队列中的命令依次执行。

  • 在命令组队过程中,可以使用discard放弃组队。

  • 如果某个命令出现了报告错误(如单词出错(error)),则Exec后,所有命令不会执行。

  • 如果出现语法性错误,类似(out of range(error)),则其他命令仍然会被执行,且将错误命令抛出异常,且不会回滚。

Redis事务的三特性

  • 隔离性:事务中所有命令都会序列化,按顺序执行。事务执行过程中,不会被其他客户端发送的命令请求打断
  • 无隔离级别:队列中的命令没有提交之前都不会被实际执行,在外面也查询不到事务里的更新
  • 不保证原子性:事务中如果出现一条命令执行失败,其后的命令依旧会执行,不会回滚。

Redis持久化

RDB

  • 概念:Redis会创建一个单独的子进程(fork)进行持久化,保存的是数据,会将数据写入临时文件,当持久化过程结束了,再用这个文件替换之前的持久化文件。

  • 特点:整个过程,主进程不进行任何IO操作,在进行大规模数据恢复时会极其高效。

  • 优点:因为保存的是数据,所以恢复速度很快,节省磁盘空间。

  • 缺点:对于数据完整性不是非常敏感,最后一次持久化的数据可能丢失。

  • 位置:文件名默认为dump.rdb(dbfilename),默认是在哪里开启redis(dir),就会在哪里生成此文件。可以在redis.conf中修改。

  • 命令:手动保存:save(只管保存,其他不管,全部阻塞)

    ​ 查看备份目录:CONFIG GET dir

  • 使用:关闭Redis,将备份拷贝到工作目录下,重启后会自动加载。

AOF

  • 概念:以日志的形式记录每个操作,只允许追加文件,但不能改写文件。

  • 特点:Redis重新启动时,会读取该文件,将所有命令执行一次以完成数据恢复。

  • 优点:备份机制文件,丢失率更低;具有一定可读性的日志文本,通过操作AOF更稳健。

  • 缺点:占用更多的磁盘空间;备份速度慢;

  • 位置:默认不开启(appendonly no),需要在redis.conf中,配置文件名称(appendfilename “filename”),保存路径与RDB路径一致。

  • 命令:如遇到AOF损坏,可尝试通过命令进行恢复:redis-check-aof --fix appendonly.aof;

    ​ 如果需要自己更改指令,可以使用vim命令删除不要的命令。

  • 重写机制(Rewrite):当AOF超过所设定的阈值时,Redis会启动AOF文件的内容压缩,只保留可以恢复数据 的最小指令集(指令:bgrewriteaof)【不是去读取旧的aof文件,而是直接读取内存中的数据库内容,用命令的方式重新写出一个具有相同效果的aof文件,类似于快照】。

注:当二者同时开启,Redis将以AOF为准;官方推荐二者都使用。


主从复制

概念:主机数据更新后,根据配置和策略,自动同步到备机的机制;Master以写为主,Slave只能读。主从复制能够降低单台Redis服务器压力,容灾也能够快速恢复。

配置

1.配置步骤

拷贝多个redis.conf文件
开启daemonize yes(默认yes)
Pid文件名字pidfile
指定端口port
Log文件名字
dump.rdb名字更改
appendonly关掉或者更改名字

2.配置模板(根据不同端口配置)

include /path/to/local.conf
pidfile /var/run/redis6379.pid
port 6379
dbfilename dump6379.rdb

3.此时复制3份,vi所有的从库配置文件,使用 %s/6379/6380 、%s/6379/6381 更改端口。然后,使用redis-server redis6379.conf,并更改配置文件名启动其他两个,启动3个redis服务。此时将会有三个端口启动,分别为6379、6380、6381

4.配置主从关系

临时

在从服务器中(6380、6381),输入slaveof  ,也就是slaveof 127.0.0.1 6379,完成。

永久

可以在配置文件中配置slaveof  

哨兵模式

概念:基于主从复制,能够后台监控主机是否故障,根据投票数自动将某个从库转为主库。旧服务器重新上线后,也将作为从服务器继续工作

配置

1.调整一主二从模式,在配置文件目录下新建sentinel.conf文件,并添一句话,内容如下

sentinel monitor mymaster 127.0.0.1 6379 1

/*
	其中,mymaster为监控对象起的服务器名称
	1为至少有多少个哨兵同意迁移的数量
*/    

2.启动哨兵

redis-sentinel sentinel.conf
  • 概念:在指定时间间隔,将内存中的数据集快照写入磁盘,也就是Snapshot快照,它恢复时是将快照文件读入内存。
  • 执行:Redis会单独创建一个子进程,写入临时文件,待持久化结束,再将临时文件替换上次持久化文件。
  • 特点:在RDB过程中,主进程不进行任何IO操作,这就保证了极高的性能。

你可能感兴趣的:(其他笔记)