redis事务

大致跟mysql的数据库的事务 意思是一样的,

什么是事务?

为了确保一系列相关的数据库操作要么全部成功,要么全部失败,从而避免了数据的不一致性和部分更新等问题。

那么如数据库事务有什么区别呢?

1.非原子性 redis事务不保证所有指令同时成功或同时失败,如果其中一条命令执行失败,其他命令仍然会继续执行,而不是全部回滚。

2.单独的隔离操作和无隔离级别 执行完事务内的所有指令前不能执行其他客户端的请求。

3.排它性 redis保证事务依次执行,不会被其他命令插入

废话不多直接上指令

开始事务------结束事务

multi//开始

指令...

exec//结束

那么如果过程中你发现不想使用事务怎么办?

使用discard直接清除当前事务

有的同学会发现,上述是指令有出错的情况

那如果其中的指令有问题会出现什么情况?

1.写的指令有问题

例如写一个set k1 却不给value等,即在redis中不存在这样的命令,

首先我们得知道不管命令对错使用事务都会插入!

我们知道redis是将命令插入队列中,所以如果命令错误在执行事务时就不会执行当前事务。

2.写的没问题执行过程中出错

例如:set k1 v1

又使用 incr k1

在执行过程中发现问题后,错误的会不执行,而其他的指令不会改变

有点像编译和执行

编译发现错所有不能运行,执行发现错误是已执行部分了。


监控?

为什么要有监控?

在多线程环境中,如果别人对某数据执行修改操作,而你如果不对某个数据监控就会出现错误情况,与预期理想效果不同。

我们在执行事务前如果开启对某个数据的监控,在执行事务时如果发现监控的数据发生过修改,就会直接停止当前事务。(所有不执行)

开启

watch

结束

unwatch

相关推荐
草莓熊Lotso3 小时前
【C++ 基于微服务的即时通讯系统】etcd + brpc 从安装到服务注册发现全链路实战
网络·数据库·c++·redis·微服务·etcd
Chenyu_3108 小时前
DPDK、TC 和 XDP:Linux 高性能网络到底在优化什么
linux·服务器·网络·缓存
Lethehong9 小时前
Oracle 加个字段,目标库就报错?KFS 用“先拆后组“打通异构 DDL
数据库·oracle
Web极客码9 小时前
锁定真正的磁盘卡顿:我用 OpenCode 配合 eBPF 诊断 NVMe 队列深度延迟与 I/O 写放大
数据库·oracle
cspttty10 小时前
2027用户研究求职准备:应用统计学如何补齐研究设计与业务表达
大数据·数据库
我不会起名字32211 小时前
Redis 突然只能读不能写:MISCONF 报错的 3 类触发条件与 4 步恢复
运维·redis·持久化·排查·misconf
roman_日积跬步-终至千里11 小时前
【数据Agent论文·查询与语义|05】Spider:为什么换一个数据库,模型就不会查了?
数据库·数据分析
猫咪很可爱11 小时前
Oracle RAC 启动失败排查:私网通信与内核参数优化实战
运维·数据库·oracle
我不会起名字32212 小时前
Redis 从 0 到 1(九):主库宕机 30 秒自动切主——1 主 2 从 3 哨兵 + Go 客户端
redis·docker·sentinel·高可用·哨兵
XLYcmy12 小时前
《数字经济赋能城市低碳治理的路径研究检索报告》审阅与修改指导意见——基于完整检索报告体例的完整性诊断、学术规范核查与方法论纠偏 上
数据库·ai·chatgpt·文心一言·检索·知网·豆包