Redis进阶(五)Redis事务&持久化机制&发布/订阅
前言
本章讲解Redis的事务、持久化机制以及发布/订阅
方法
1.概念
首先,我们需要知道,Redis作为一个非关系型数据库,它对事务的要求没有关系型数据库高,当然也就不是全部具备事务的ACID特性。
而对于Redis的持久化机制,简单的理解就是它为内存级的数据库,在保证速度的同时也要保证安全,为了防止因意外造成的宕机数据丢失,Redis会定时的向硬盘中存入数据来保证数据持久化(RDB和AOF)。
其次,它还为我们提供了发布和订阅的功能。
2.Redis事务
Redis的事务处理非常简单,只需要使用multi命令开启事务,使用exec执行事务或者使用discard取消事务即可。
3.Redis的持久化机制
1)RDB模式
该模式也是默认的模式,我们之前见到的rdb文件就是用来做数据持久化的文件。
我们可以在redis.conf文件中找到如下配置,该配置就是用来配置RDB模式的具体执行规则的。
第一句话表示900秒内如果有超过一个key被修改,则发起快照保存
其余几句话类似。
这种方式显然不适合生产环境,因为一旦在几秒内机器宕机的话,将会丢失很多的数据,造成无法估量的损失。
2)AOF模式
该模式区别于传统的RDB模式,他将用户的写操作指令保存至aof文件中,在Redis重新启动的时候执行这个文件来重建数据。
显然它是安全的,但是安全的同时就带来了效率的问题,使用它Redis的效率会下降。
如果想要采取此种模式,则需要进行如下的配置开启aof:
aof有如下三种选项,我们生产环境使用 always:
- appendfsync always:代表收到写命令就立刻写磁盘,效率最低,但是保证了数据完全的持久化。
- appendfsync everysec:代表每秒钟写入磁盘一次,是一个折中的办法。
- appendfsync no:完全依赖操作系统做写入操作,十分不可靠。效率最高
配置好之后我们重启redis会发现etc目录下出现appendonly.aof
此刻代表着rdb模式已经自动的关闭了。
4.Redis的发布和订阅
使用104和105机器订阅cctv频道:
subscribe 频道
使用103机器向cctv频道发布消息:
那么104和105机器就会收到对应的消息。