redis事务

redis 事务和 MySQL事务的区别

首先 redis 的事务的原子性是弱化版,它能保证事务的指令是原子操作,中间不会有其他命令插入进来,但是不保证事务执行成功,也就说 redis 没有 "回滚机制",即使执行失败,也不会进行回滚

不保证一致性,由于没有回滚机制,也不涉及约束,因此 redis 不能保证数据的一致性,即使中间执行失败也不会进行回滚

不要隔离性,因为redis 是单线程执行请求,不会并发执行事务,就没有MySQL的隔离级别

不需要持久化:redis 的数据是保存在 内存中的,是否开启持久化是 redis-server (配置)这边的事了

事务操作

MULTI

开启事务的指令,开启成功会返回 OK

每添加一个操作,就会提示 "QUEUED",说明命令进入客户端的队列中了

EXEC

执行事务的指令

当真正执行 EXEC 的时候,客户端就会真正把上述的操作发送给服务器中

DISCARD

放弃当前的事务,会直接清空事务队列的内容,之前添加到队列的操作也不会被执行

此时我们是获取不到 key1 和 key2 的,因为我们取消了事务

WATCH

如果在执行事务的时候某个事务修改了值,被其他客户端也修改了,就容易出现数据不一致的问题

在开启事务的时候,如果watch的key进行修改,就会记录当前的key 的版本号,每次修改都会使版本号变大,当真正提交事务的时候,如果发现当前服务器上的key 的版本号已经超过了事务开始时的版本号,就会导致事务执行失败,事务所有的操作都不会执行。

我们在exec 之前执行了 set key 555,并且 watch key , 发现版本号超过了当前事务开始的版本号,就会导致当前事务所有的操作不会执行,返回 nil

UNWATCH

取消对某个key 的 watch

相关推荐
虹科网络安全9 小时前
RDI 多数据源管道:把分散的数据汇入统一 Redis 数据层
经验分享·redis·艾体宝·艾体宝it·艾体宝redis
我不会起名字32211 小时前
Redis 从 0 到 1(三十七·收官):36 篇浓缩成 1 张知识地图 + 50 项生产 Checklist
redis·go·知识体系·checklist·收官
2601_9679873712 小时前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
小番茄程序猿14 小时前
Redis 编码压测 59 轮:HSET 快 23 倍是假象,SMEMBERS 慢 30 倍是真的
redis·后端
鶴哥只手遮天15 小时前
《Redis 8.10.3 深度剖析》系列 ·第 13 章 Set:三种编码、集合运算与随机采样
redis·后端·开源
瑞克-桑切斯18 小时前
redis
数据库·redis·缓存
花间相见19 小时前
【计算基础|Redis02】【上手】五大数据类型命令逐条实操
数据库·redis·后端
时间的拾荒人20 小时前
Redis 入门详解:核心特性、重要文件与全局命令实战
开发语言·redis·面试
小南家的青蛙21 小时前
基于Spring Boot 2.x开发的微服务访问Redis的方案
redis·springboot
bksczm21 小时前
Redis 持久化:RDB 快照与 AOF 日志
数据库·redis·mybatis