Redis持久化和事务

本文详细介绍了Redis的两种持久化机制:RDB和AOF,包括它们的触发方式、优缺点以及重写策略。此外,还探讨了Redis的事务功能,包括事务的基本操作、错误处理和分布式锁的实现。
摘要由CSDN通过智能技术生成

Redis持久化和事务

持久化

​ 利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。防止数据的意外丢失,确保数据安全性。

​ Redis提供了持久化的机制,分别是

  • RDB(Redis DataBase):将当前数据状态进保存,快照形式,存储数据结果,存储格式简单,关注点在数据。
  • AOF(Append Only File):将数据的操作过程进行保存,日志形式,存储操作过程,存储格式复杂,关注点在数据的操作过程。

RDB

​ RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。

​ RDB提供了三种触发机制来进行保存快照:

  • save指令触发
  • bgsave指令触发
  • 自动触发
save指令
  • 命令:save
  • 作用:手动执行一次保存操作

在这里插入图片描述

​ redis是单线程的,所有当执行save命令的时候不能处理其他命令,所以改命令会阻塞当前的redis服务器。如果需要持久化的数据量较大的时候,就会导致后续指令长时间等待。所以这种方式不可取。

bgsave指令
  • 命令:bgsave
  • 作用:手动启动后台保存操作,但不立即执行

在这里插入图片描述

​ Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。具体操作是Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段,一般时间很短。基本上 Redis 内部所有的RDB操作都是采用 bgsave 命令。

​ bgsave命令是针对save阻塞问题做的优化。Redis内部所有涉及到RDB操作都采用bgsave的方式,save命令可以放弃使用。

save配置
  • 配置:save second changes
  • 参数:
    • second:监控时间范围
    • chagnes:监控key的变化量
  • 作用:满足限定时间范围内key的变化数达到指定数量即进行持久化。
RDB的持久化配置

时间策略
save 900 1
save 300 10
save 60 10000

表示900 秒内如果至少有 1 个 key 的值变化,则进行bgsave。

表示300 秒内如果至少有 10 个 key 的值变化,则进行bgsave。

表示60 秒内如果至少有 10000 个 key 的值变化,则进行bgsave。

文件名称
dbfilename dump.rdb

设置快照的文件名,默认是 dump.rdb

文件保存路径
dir /home/work/app/redis/data/

设置快照文件的存放路径,这个配置项一定是个目录,而不能是文件名。

如果持久化出错,主进程是否停止写入
stop-writes-on-bgsave-error yes

默认值为yes。当启用了RDB且最后一次后台保存数据失败,Redis是否停止接收数据。这会让用户意识到数据没有正确持久化到磁盘上,否则没有人会注意到灾难(disaster)发生了。如果Redis重启了,那么又可以重新开始接收数据了.

是否压缩
rdbcompression yes

默认值是yes。对于存储到磁盘中的快照,可以设置是否进行压缩存储。

导入时是否检查
rdbchecksum yes

默认值是yes。在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值