redis事务常用操作详解

 更新时间:2019年07月02日 09:37:22   作者:夏夜的雨不停下  
在本篇文章里小编给大家分享了关于redis事务常用操作的相关知识点内容,有兴趣的朋友们可以跟着学习参考下。

事务

MULTI 、 EXEC 、 DISCARD 和 WATCH 是 Redis 事务相关的命令。事务可以一次执行多个命令, 并且带有以下两个重要的保证:

事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。

事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

EXEC 命令负责触发并执行事务中的所有命令

如果客户端在使用 MULTI 开启了一个事务之后,却因为断线而没有成功执行 EXEC ,那么事务中的所有命令都不会被执行。
另一方面,如果客户端成功在开启事务之后执行 EXEC ,那么事务中的所有命令都会被执行。
当使用 AOF 方式做持久化的时候, Redis 会使用单个 write(2) 命令将事务写入到磁盘中。

然而,如果 Redis 服务器因为某些原因被管理员杀死,或者遇上某种硬件故障,那么可能只有部分事务命令会被成功写入到磁盘中。

如果 Redis 在重新启动时发现 AOF 文件出了这样的问题,那么它会退出,并汇报一个错误。

使用redis-check-aof程序可以修复这一问题:它会移除 AOF 文件中不完整事务的信息,确保服务器可以顺利启动。

从 2.2 版本开始,Redis 还可以通过乐观锁(optimistic lock)实现 CAS (check-and-set)操作,具体信息请参考文档的后半部分。Redis事务可以执行一系列的脚本,并且带有以下两个重要的保证:

批量的命令在Exec命令之前,事务中任意命令执行失败,其余的命令依然被执行。在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:开始-入队-执行。本文介绍下Redis事务的常用命令。

DISCARD取消事务,放弃执行事务块内的所有命令。命令的执行如下所示。先选取一段命令,然后执行该命令取消

Exec命令:执行所有的脚本命令。事务块内所有命令的返回值,按命令执行的先后顺序排列。 当操作被打断时,返回空值 nil 。

# 监视 key ,且事务成功执行。可以监控Key的值的变化以及执行事务的执行情况。

# 监视 key ,且事务执行中断。可以监控事务的执行情况,以及事务中断的情况。

Redis Multi 命令。用于标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,输入完成命令之后,输入exec执行命令。

UNwatch命令用于取消事务的监视。当输入一个命令监视时,可以通过UNwatch命令,取消对命令的监视。

 

相关文章

  • 浅谈Redis缓存有哪些淘汰策略

    浅谈Redis缓存有哪些淘汰策略

    redis用做缓存是一种非常常见的手段,然而由于内存大小的限制,会导致redis在内存空间满了以后需要处理继续存入的数据,所以就需要淘汰策略,本文就详细的介绍一下
    2021-08-08
  • Redis中的数据结构跳表详解

    Redis中的数据结构跳表详解

    跳表是一种基于并联的链表结构,用于在有序元素序列中快速查找元素的数据结构,本文给大家介绍Redis中的数据结构跳表,感兴趣的朋友跟随小编一起看看吧
    2024-06-06
  • Redis优惠券秒杀解决方案

    Redis优惠券秒杀解决方案

    这篇文章主要介绍了Redis解决优惠券秒杀应用案例,本文先讲了抢购问题,指出其中会出现的多线程问题,提出解决方案采用悲观锁和乐观锁两种方式进行实现,然后发现在抢购过程中容易出现一人多单现象,需要的朋友可以参考下
    2022-12-12
  • Redis实战记录之限制操作频率

    Redis实战记录之限制操作频率

    这篇文章主要给大家介绍了关于Redis实战记录之限制操作频率的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • Redis实现多级缓存

    Redis实现多级缓存

    这篇文章主要为大家详细介绍了Redis实现多级缓存,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 关于Redis单线程的正确理解

    关于Redis单线程的正确理解

    很多同学对Redis的单线程和I/O多路复用技术并不是很了解,所以我用简单易懂的语言让大家了解下Redis单线程和I/O多路复用技术的原理,对学好和运用好Redis打下基础,感兴趣的朋友跟随小编一起看看吧
    2021-11-11
  • 基于session Redis实现登录

    基于session Redis实现登录

    这篇文章主要介绍了基于session Redis实现登录的相关资料,需要的朋友可以参考下
    2023-10-10
  • Redis存取序列化与反序列化性能问题详解

    Redis存取序列化与反序列化性能问题详解

    这篇文章主要给大家介绍了关于Redis存取序列化与反序列化性能问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 基于Redis实现延时队列的优化方案小结

    基于Redis实现延时队列的优化方案小结

    本文主要介绍了基于Redis实现延时队列的优化方案小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Centos7安装redis的超详细步骤教程

    Centos7安装redis的超详细步骤教程

    Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统,下面这篇文章主要介绍了Centos7安装redis的超详细步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-10-10

最新评论