当前位置:网站首页>Redis:Redis的事务
Redis:Redis的事务
2022-07-04 22:43:00 【dengfengling999】


Redis的事务允许在一次单独的步骤中执行一组命令,并且能够保证将一个事务中的所有命令序列化,然后按顺序执行;在一个Redis事务中,Redis要么执行其中的所有命令,要么什么都不执行。即Redis的事务要能够保证序列化和原子性。
Redis的事务只能保持部分原子性,不能保持完全原子性,数据可能存在不一致
Redis对事物进行了简化,为什么简化?它要提高它的访问效率,它不考虑那么多事务的移植性
- Redis事务的常用命令:
- multi
语法:multi
功能:用于标记事务块的开始。Redis会将后续的命令逐个放入队列中,然后才能使用EXEC命令原子化地执行这个命令序列。
返回值:开启成功返回OK

例如:

2.exec
语法:exec
功能:在一个事务中执行所有先前放入队列的命令,然后恢复正常的连接状态。
如果在把命令压入队列的过程中报错,则整个队列中的命令都不会执行,执行结果报错;
如果在压队列的过程中正常,在执行队列中某一个命令报错,则只会影响本条命令的执行结果,其它命令正常运行;
当使用WATCH命令时,只有当受监控的键没有被修改时,EXEC命令才会执行事务中的命令;而一旦执行了exec命令,之前加的所有watch监控全部取消。
返回值:这个命令的返回值是一个数组,其中的每个元素分别是原子化事务中的每个命令的返回值。 当使用WATCH命令时,如果事务执行中止,那么EXEC命令就会返回一个Null值。
inc k1 :对数值型k1 进行加一,如果不是数值型的话汇报错,在压入对列的时候不会真正执行,所以不知道k1是不是数值型
例如:压入对列报错,都不执行,保持原子性

压入对列不报错:

3.discard
语法:discard
功能:清除所有先前在一个事务中放入队列的命令,并且结束事务。
如果使用了WATCH命令,那么DISCARD命令就会将当前连接监控的所有键取消监控。
返回值:清除成功,返回OK。

例如:
4.watch

语法:watch key [key …]
功能:当某个事务需要按条件执行时,就要使用这个命令将给定的键设置为受监控的。如果被监控的key值在本事务外有修改时,则本事务所有指令都不会被执行。Watch命令相当于关系型数据库中的乐观锁。
返回值:监控成功,返回OK。
decrby:减指定值 incrby:加指定值
例如:

建立另外一个连接进行更改vcersion



5.unwatch
语法:unwatch
功能:清除所有先前为一个事务监控的键。
如果在watch命令之后你调用了EXEC或DISCARD命令,那么就不需要手动调用UNWATCH命令。
返回值:清除成功,返回OK。

例如:清除所有监控的

改变version:

Redis事务小结:
1、单独的隔离操作:事务中的所有命令都会序列化、顺序地执行。事务在执行过程中,不会被其它客户端发来的命令请求所打断,除非使用watch命令监控某些键。
2、不保证事务的原子性:redis同一个事务中如果一条命令执行失败,其后的命令仍然可能会被执行,redis的事务没有回滚。Redis已经在系统内部进行功能简化,这样可以确保更快的运行速度,因为Redis不需要事务回滚的能力。
边栏推荐
- Talk about Middleware
- Google Earth engine (GEE) - tasks upgrade enables run all to download all images in task types with one click
- 9 - class
- Photoshop batch adds different numbers to different pictures
- 【剑指Offer】6-10题
- Google Earth engine (GEE) - globfire daily fire data set based on mcd64a1
- Redis入门完整教程:HyperLogLog
- 攻防世界 MISC 高手进阶区 001 normal_png
- S32 Design Studio for ARM 2.2 快速入门
- vim编辑器知识总结
猜你喜欢

Redis getting started complete tutorial: Key Management

A complete tutorial for getting started with redis: getting to know redis for the first time

MYSQL架构——逻辑架构

The small program vant tab component solves the problem of too much text and incomplete display

Mongodb aggregation operation summary

JS 3D explosive fragment image switching JS special effect

MYSQL架构——用户权限与管理

The overview and definition of clusters can be seen at a glance

【图论】拓扑排序

Redis introduction complete tutorial: client communication protocol
随机推荐
A complete tutorial for getting started with redis: redis shell
Redis introduction complete tutorial: client communication protocol
P2181 对角线和P1030 [NOIP2001 普及组] 求先序排列
The difference between Max and greatest in SQL
Analog rocker controlled steering gear
[graph theory] topological sorting
【室友用一局王者荣耀的时间学会了用BI报表数据处理】
Insert sort, select sort, bubble sort
Redis入门完整教程:API的理解和使用
Talk about Middleware
攻防世界 MISC 进阶区 Erik-Baleog-and-Olaf
Redis入门完整教程:Redis使用场景
[OpenGL] note 29 anti aliasing (MSAA)
ECS settings SSH key login
PS style JS webpage graffiti board plug-in
Redis入门完整教程:HyperLogLog
Redis getting started complete tutorial: Geo
剑指 Offer 67. 把字符串转换成整数
共创软硬件协同生态:Graphcore IPU与百度飞桨的“联合提交”亮相MLPerf
[odx Studio Edit pdx] - 0.2 - Comment comparer deux fichiers pdx / odx