Redis 事务 / 乐观锁 / 持久化

本文详细介绍了Redis的事务特性,包括开启事务后的命令入队、原子性和错误处理。同时,讨论了乐观锁的概念,即在事务开始前监视变量,若有其他线程改变变量则事务失败。此外,还阐述了Redis的持久化方法,如RDB(Redis DataBase)和AOF,强调了两者在数据恢复完整性和效率上的权衡。RDB适用于大规模数据恢复,而AOF则确保更高的数据安全性,但恢复速度较慢。
摘要由CSDN通过智能技术生成

Redis事务

开启事务之后,进行命令入队,但是命令没有执行,只是等待,直到执行exec时才会执行

开启事务
multi

命令入队

执行事务
exec
discard 清空队列,放弃事务

Redis单条指令保证原子性,但是事务不保证原子性

执行时错误

语法没有问题,但是不能对字符串执行➕1操作,只有这一句出错,其他语句正常执行。

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> set k1 "v1"
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr k1
QUEUED
127.0.0.1:6379> set k2 v2
QUEUED
127.0.0.1:6379> exec
1) (error) ERR value is not an integer or out of range
2) OK
127.0.0.1:6379> get k2
"v2"

编译时错误:
事务中的语法错误,执行事务时提示错误,并且其他语句都不执行

在这里插入图片描述

乐观锁

通过watch监视

监视数据
watch key

事务开启前监视变量,进入事务,提交操作,但是另一个线程改变变量,此时提交事务,返回nil失败

在这里插入图片描述

Redis持久化

Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,服务器退出,数据库就会消失,因此持久化非常重要

RDB(Redis DataBase)

指定时间间隔中将内存中的数据快照写入磁盘,回复就是将快照文件读取到内存中。
在这里插入图片描述
默认使用RDB进行持久化,如果要进行大规模数据恢复,且对数据恢复的完整性是非常敏感的,那么RDB比AOF方式更加高效,RDB的缺点是最后一次持久化后的数据可能丢失。
RDB默认的文件名dump.rdb,出发机制:

  • save,自动触发
  • 执行flushall
  • 退出redis

只需要将rdb文件放在redis启动目录就可以,redis启动的时候会自动检查dump.rdb恢复其中的数据

127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/bin"

AOF

AOF相当于将所有的创建和删除语句都存储下来,在重新导入时,重新执行一遍,比较浪费时间
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值