redis似乎并没有“事务”,那些用到“事务”的人在做什么?
一、redis似乎并没有“事务”,那些用到“事务”的人在做什么

Redis主要是针对单个key,或者说,单个数据对象的操作,这样,事务里的多对象Atomic要求就很低。
当Redis的命令执行多对象操作,比如MSET命令,或者Redis的Transaction命令(也含LUA),涉及多数据对象时,其内部,是顺序执行的(这也是我们说的,Redis是单线程架构),相当于传统DB的Serialize级别。这时,ACID里的Isolation在Redis里就极其简化,因为不存在两个并发事务互相的干扰,即Redis不存在并发命令。
Redis的Transaction命令,不是严格意义的事务,因为缺乏Rollback。
磁盘的AOF或RDB文件,只是个备份,不是传统意义上的DB的Dataset包含磁盘数据的概念,所以,把Redis的磁盘数据,看成整个Dataset的一部分,是不对的,还是只考虑Redis的内存特性,即它是内存数据库。
Redis 只是提供了简单的事务功能。其本质是一组命令的集合,事务支持一次执行多个命令,在事务执行过程中,会顺序执行队列中的命令,其他客户端提交的命令请求不会插入到本事务执行命令序列中。命令的执行过程是顺序执行的,但不能保证原子性。无法像 MySQL 那样,有隔离级别,出了问题之后还能回滚数据等高级操作。
延伸阅读:
二、Redis事务的应用场景
在分布式系统和高并发场景下,事务处理具有重要意义。Redis事务可以确保数据的一致性,避免并发操作导致的数据不一致问题。以下是一些Redis事务的应用场景:
批量操作:Redis 事务可以将多个命令打包成一个单元来执行,可以减少与 Redis 服务器的通信次数,从而提高性能。数据库迁移:在迁移数据时,需要保证数据一致性。通过Redis事务,可以确保数据在迁移过程中不会出现不一致的情况。分布式锁:在分布式系统中,为了保证数据的一致性,需要实现分布式锁。通过Redis事务,可以在同一个事务中执行锁定、解锁等操作,确保锁的原子性。这些应用场景展示了Redis事务在实际应用中的价值。接下来,我们将详细介绍Redis事务的基本命令、特性和实现原理。
猜你喜欢LIKE
相关推荐HOT
更多>>
数据库ER图是怎么做的?
一、数据库ER图的制作步骤1、确定实体首先,确定数据库中的实体,即表示现实世界中独立存在的对象或概念。例如,如果我们正在设计一个学生管理...详情>>
2023-10-17 22:22:23
数据库事务原子性、一致性是怎样实现的?
一、数据库事务原子性、一致性的实现方式数据库事务的原子性(Atomicity)和一致性(Consistency)是通过事务的 ACID 特性来实现的。原子性(At...详情>>
2023-10-17 20:24:58
PolarDB-X与PolarDB的关键区别是什么?
一、PolarDB-X与PolarDB的关键区别PolarDB实际是共享存储型的数据库,适合于公有云场景降低中小型租户成本的数据库,类似于AWS的AURORA,类似于...详情>>
2023-10-17 17:43:25
SQL语句为什么使用select * 会降低查询速度?
一、为什么使用select * 会降低查询速度在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。说明:增加查询分析器解析...详情>>
2023-10-17 15:31:17热门推荐
设计数据库时,数据库名和表名是否需要前缀,优缺点是什么?
沸什么是分库分表?
热数据库ER图是怎么做的?
热时序数据库是什么?
新用什么工具做局域网报表填报系统?
数据库事务原子性、一致性是怎样实现的?
作为一个K-V数据库,levelDB索引为什么要使用LSM树实现,而不采用哈希索引?
既然MySQL中InnoDB使用MVCC,为什么REPEATABLE-READ不能消除幻读?
为什么要用模块化、组件化才能完成 Android 项目中类加载功能?
PolarDB-X与PolarDB的关键区别是什么?
怎样在MySQL表中存储树形结构数据?
redis似乎并没有“事务”,那些用到“事务”的人在做什么?
开发一款商城系统APP有什么优势?
SQL语句为什么使用select * 会降低查询速度?
技术干货
京公网安备 11010802030320号