redis执行lua脚本的原子性和数据库原子性的区别

一、redis执行lua脚本的原子性和数据库原子性的区别

当我们想在redis的一个事物当中执行多个命令的时候呢,会选择使用lua脚本。Redis会将一个要执行的lua脚本封装成一个单独的事务,而脚本执行器在执行这个事务的过程中呢,如果有其他的客户端请求过来,redis会把它暂存起来,等脚本处理完以后,才会把暂存的请求恢复执行。这样就可以保证整个脚本是作为一个整体执行的,中间不会被其他的命令插入。但是,如果事务执行的过程中产生了错误,事务是不会回滚的,也不会影响后续的命令执行,也就是说,Redis会保证以原子方式执行lua脚本,但是不保证脚本中的所有的操作要么都执行,要么都回滚这件事儿。那也就意味着,Redis lua脚本的执行可以保证并发编程当中那个不可拆分,不可被中断的这个原则性,但是没有办法保证数据库ACID当中的那个要么都执行,要么都回滚的。

相关推荐
源图客3 小时前
Spark读取MySQL数据库表
数据库·mysql·spark
xiucai_cs5 小时前
MySQL深分页慢问题及性能优化
数据库·mysql·性能优化·深分页
当牛作馬5 小时前
ES常用查询命令
数据库·mysql·elasticsearch
chenglin0167 小时前
ES_索引的操作
大数据·数据库·elasticsearch
共享家95278 小时前
MYSQL库及表的操作
数据库
想回家的一天10 小时前
Go1.25的源码分析-src/runtime/runtime1.go(GMP)
数据库·redis·缓存
阿里云大数据AI技术11 小时前
鹰角网络基于阿里云EMR Serverless StarRocks的实时分析工程实践
数据库·数据分析
久笙&11 小时前
对象存储解决方案:MinIO 的架构与代码实战
数据库·python·架构