Redis__事务

文章目录

😊 @ 作者:Lion J
💖 @ 主页: https://blog.csdn.net/weixin_69252724
🎉 @ 主题:Redis__事务
⏱️ @ 创作时间:2024年05月02日
————————————————

Redis事务:

MySQL里的事务就是将多条语句看作是一个原子操作, 要么同时执行要么同时失败.
Redis事务是指将多条命令加入队列,一次批量执行多条命令,每条命令会按顺序执行,事务执行过程中不会受客户端传入的命令请求影响。

Redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。

既然提出来了MySQL事务, 那就看一下他和MySQL事务有什么区别:
Redis事务和关系型数据库的事务不太一样,它不保证原子性,也没有隔离级别的概念。

  • Redis事务没有隔离级别的概念
    批量操作在发送 EXEC 命令前被放入队列缓存,并不会被实际执行,也就不存在事务内的查询要看到事务里的更新,事务外查询不能看到。
  • Redis不保证原子性
    Redis中,单条命令是原子性执行的,但事务不保证原子性,且没有回滚。事务中任意命令执行失败,其余的命令仍会被执行。

在这里插入图片描述

在上面的例子中, Redis中的两个用户, 分别对同一个数据进行操作, 用户1 set 了name 这个值, 用户2 又对这个值进行操作, 如然后在客户1这边获取name值, 会发现不是自己设置的值, 值是用户2的值

对于这样的问题, 就提出来Redis事务

思考:

那么,我如果在用户1将他的操作作为一个整体, 有序的进行, 其他客户的命令不能插入到这个整体里, 那不就解决这个问题了吗?

确实, 是这样的

开始Redis事务

multi  # 开启事务

set name jwq
get name
set name cxy
keys *
exec # 执行事务

如果你在写redis命令时候, 发现已经将错误的redis命令入队列了, 那么需要取消事务该怎么做?

discard # 取消事务

如图:
在这里插入图片描述

Redis相关的命令如下:

  • MULTI:标识一个事务的开启,即开启事务;
  • EXEC:执行事务中的所有命令,即提交;
  • DISCARD:放弃事务;和回滚不一样,Redis事务不支持回滚。
  • WATCH:监视Key改变,用于实现乐观锁。如果监视的Key的值改变,事务最终会执行失败。
  • UNWATCH:放弃监视。

Redis 事务支持原子性吗?

Redis 事务在运行错误的情况下,除了执行过程中出现错误的命令外,其他命令都能正常执行。并且,Redis 事务是不支持回滚操作的。因此,Redis 事务其实是不满足原子性的。

Redis 事务支持持久性吗?

Redis 不同于 Memcached 的很重要一点就是,Redis 支持持久化,而且支持 3 种持久化方式:快照(snapshotting,RDB)只追加文件(append-only file, AOF)RDB 和 AOF 的混合持久化(Redis 4.0 新增)与 RDB 持久化相比,AOF 持久化的实时性更好。在 Redis 的配置文件中存在三种不同的 AOF 持久化方式( fsync策略),它们分别是:

appendfsync always    #每次有数据修改发生时都会调用fsync函数同步AOF文件,fsync完成后线程返回,这样会严重降低Redis的速度
appendfsync everysec  #每秒钟调用fsync函数同步一次AOF文件
appendfsync no        #让操作系统决定何时进行同步,一般为30秒一次

在上一文 Reidis__持久化 有介绍到

相关推荐

  1. Redis 事务

    2024-05-03 01:00:02       54 阅读
  2. Redis 事务

    2024-05-03 01:00:02       42 阅读
  3. Redis事务

    2024-05-03 01:00:02       39 阅读
  4. Redis事务

    2024-05-03 01:00:02       39 阅读
  5. redis事务

    2024-05-03 01:00:02       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-03 01:00:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-03 01:00:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-03 01:00:02       82 阅读
  4. Python语言-面向对象

    2024-05-03 01:00:02       91 阅读

热门阅读

  1. 【C】190 颠倒二进制位

    2024-05-03 01:00:02       37 阅读
  2. 【SSL 1967】A和B

    2024-05-03 01:00:02       27 阅读
  3. 《Redis使用手册之持久化存储》

    2024-05-03 01:00:02       36 阅读
  4. 21-30图表

    2024-05-03 01:00:02       25 阅读
  5. JDO还有人用吗

    2024-05-03 01:00:02       30 阅读
  6. 【Flask 系统教程 1】入门及配置

    2024-05-03 01:00:02       30 阅读
  7. springboot新闻推荐系统 - 源码免费(私信领取)

    2024-05-03 01:00:02       31 阅读
  8. 探索“cd”命令:通往数字世界的奇幻之旅

    2024-05-03 01:00:02       35 阅读
  9. TCP三次握手

    2024-05-03 01:00:02       26 阅读
  10. go开发环境安装配置(vscode)

    2024-05-03 01:00:02       26 阅读