Redis进阶(五)Redis事务&持久化机制&发布/订阅

前言

      本章讲解Redis的事务、持久化机制以及发布/订阅

方法

1.概念

首先,我们需要知道,Redis作为一个非关系型数据库,它对事务的要求没有关系型数据库高,当然也就不是全部具备事务的ACID特性。

而对于Redis的持久化机制,简单的理解就是它为内存级的数据库,在保证速度的同时也要保证安全,为了防止因意外造成的宕机数据丢失,Redis会定时的向硬盘中存入数据来保证数据持久化(RDB和AOF)。

其次,它还为我们提供了发布和订阅的功能。

2.Redis事务

Redis的事务处理非常简单,只需要使用multi命令开启事务,使用exec执行事务或者使用discard取消事务即可。

Redis进阶(五)Redis事务&持久化机制&发布/订阅

Redis进阶(五)Redis事务&持久化机制&发布/订阅

3.Redis的持久化机制

1)RDB模式

该模式也是默认的模式,我们之前见到的rdb文件就是用来做数据持久化的文件。

Redis进阶(五)Redis事务&持久化机制&发布/订阅

我们可以在redis.conf文件中找到如下配置,该配置就是用来配置RDB模式的具体执行规则的。

Redis进阶(五)Redis事务&持久化机制&发布/订阅

第一句话表示900秒内如果有超过一个key被修改,则发起快照保存

其余几句话类似。

这种方式显然不适合生产环境,因为一旦在几秒内机器宕机的话,将会丢失很多的数据,造成无法估量的损失。

2)AOF模式

该模式区别于传统的RDB模式,他将用户的写操作指令保存至aof文件中,在Redis重新启动的时候执行这个文件来重建数据。

显然它是安全的,但是安全的同时就带来了效率的问题,使用它Redis的效率会下降。

如果想要采取此种模式,则需要进行如下的配置开启aof:

Redis进阶(五)Redis事务&持久化机制&发布/订阅

aof有如下三种选项,我们生产环境使用 always:

Redis进阶(五)Redis事务&持久化机制&发布/订阅

  • appendfsync always:代表收到写命令就立刻写磁盘,效率最低,但是保证了数据完全的持久化。
  • appendfsync everysec:代表每秒钟写入磁盘一次,是一个折中的办法。
  • appendfsync no:完全依赖操作系统做写入操作,十分不可靠。效率最高

配置好之后我们重启redis会发现etc目录下出现appendonly.aof

此刻代表着rdb模式已经自动的关闭了。

Redis进阶(五)Redis事务&持久化机制&发布/订阅

4.Redis的发布和订阅

 使用104和105机器订阅cctv频道:

subscribe 频道

Redis进阶(五)Redis事务&持久化机制&发布/订阅

使用103机器向cctv频道发布消息:

Redis进阶(五)Redis事务&持久化机制&发布/订阅

那么104和105机器就会收到对应的消息。 

Redis进阶(五)Redis事务&持久化机制&发布/订阅