redis-事务使用方法

一,redis-事务是否拥有原子性

Redis的单条命令是保证原子性的,但是redis事务不能保证原子性    
Redis事务本质:一组命令的集合。

----------------- 队列 set set set 执行 -------------------

事务中每条命令都会被序列化,执行过程中按顺序执行,不允许其他命令进行干扰。

一次性
顺序性
排他性
Redis事务没有隔离级别的概念
Redis单条命令是保证原子性的,但是事务不保证原子性!
Redis事务操作过程

二 ,Redis事务操作过程

  • 开启事务(multi
  • 命令入队
  • 执行事务(exec
所以事务中的命令在加入时都没有被执行,直到提交时才会开始执行(Exec)一次性完成。
127.0.0.1:6379> multi # 开启事务
OK
127.0.0.1:6379> set k1 v1 # 命令入队
QUEUED
127.0.0.1:6379> set k2 v2 # ..
QUEUED
127.0.0.1:6379> get k1
QUEUED
127.0.0.1:6379> set k3 v3
QUEUED
127.0.0.1:6379> keys *
QUEUED
127.0.0.1:6379> exec # 事务执行
1) OK
2) OK
3) "v1"
4) OK
5) 1) "k3"
   2) "k2"
   3) "k1"

取消事务(discurd)

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k1 v1
QUEUED
127.0.0.1:6379> set k2 v2
QUEUED
127.0.0.1:6379> DISCARD # 放弃事务
OK
127.0.0.1:6379> EXEC 
(error) ERR EXEC without MULTI # 当前未开启事务
127.0.0.1:6379> get k1 # 被放弃事务中命令并未执行
(nil)
事务错误

代码语法错误(编译时异常)所有的命令都不执行

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k1 v1
QUEUED
127.0.0.1:6379> set k2 v2
QUEUED
127.0.0.1:6379> error k1 # 这是一条语法错误命令
(error) ERR unknown command `error`, with args beginning with: `k1`, # 会报错但是不影响后续命令入队 
127.0.0.1:6379> get k2
QUEUED
127.0.0.1:6379> EXEC
(error) EXECABORT Transaction discarded because of previous errors. # 执行报错
127.0.0.1:6379> get k1 
(nil) # 其他命令并没有被执行

代码逻辑错误 (运行时异常) **其他命令可以正常执行 ** >>> 所以不保证事务原子性

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set k1 v1
QUEUED
127.0.0.1:6379> set k2 v2
QUEUED
127.0.0.1:6379> INCR k1 # 这条命令逻辑错误(对字符串进行增量)
QUEUED
127.0.0.1:6379> get k2
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) (error) ERR value is not an integer or out of range # 运行时报错
4) "v2" # 其他命令正常执行

# 虽然中间有一条命令报错了,但是后面的指令依旧正常执行成功了。
# 所以说Redis单条指令保证原子性,但是Redis事务不能保证原子性。

相关推荐

  1. redis-事务使用方法

    2024-04-05 02:38:04       15 阅读
  2. Redis 事务

    2024-04-05 02:38:04       35 阅读
  3. Redis 事务

    2024-04-05 02:38:04       24 阅读
  4. Redis事务

    2024-04-05 02:38:04       19 阅读
  5. Redis事务

    2024-04-05 02:38:04       14 阅读
  6. redis事务

    2024-04-05 02:38:04       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-05 02:38:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-05 02:38:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-05 02:38:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-05 02:38:04       20 阅读

热门阅读

  1. 数码视讯Q7盒子刷armbian或emuelec的一些坑

    2024-04-05 02:38:04       33 阅读
  2. 元宇宙虚拟空间的加载管理(三)

    2024-04-05 02:38:04       16 阅读
  3. 字符串处理算法

    2024-04-05 02:38:04       14 阅读
  4. 零日攻击

    2024-04-05 02:38:04       15 阅读
  5. 01背包问题

    2024-04-05 02:38:04       15 阅读
  6. 从Jenkinsfile构建到k8s部署

    2024-04-05 02:38:04       17 阅读
  7. Git/GitHub/Gitee⼯作流最佳实践

    2024-04-05 02:38:04       15 阅读
  8. 机器学习——典型的卷积神经网络

    2024-04-05 02:38:04       14 阅读
  9. 第十三题:天干地支

    2024-04-05 02:38:04       16 阅读
  10. 什么叫地下水年龄?

    2024-04-05 02:38:04       12 阅读