首页 > 数据库 >30. Redis---事务(24补充)

30. Redis---事务(24补充)

时间:2022-08-20 18:00:33浏览次数:103  
标签:24 事务 127.0 0.1 30 Redis 6379 key

1.前言

Redis 事务的目的是方便用户一次执行多个命令。执行 Redis 事务可分为三个阶段:

  • 开始事务
  • 命令入队
  • 执行事务

2. Redis事务特性

Redis 事务具有两个重要特性:

1) 单独的隔离操作

事务中的所有命令都会被序列化,它们将按照顺序执行,并且在执行过的程中,不会被其他客户端发送来的命令打断。

2) 不保证原子性

在 Redis 的事务中,如果存在命令执行失败的情况,那么其他命令依然会被执行,不支持事务回滚机制。

注意:Redis 不支持事务回滚,原因在于 Redis 是一款基于内存的存储系统,其内部结构比较简单,若支持回滚机制,则让其变得冗余,并且损耗性能,这与 Redis 简单、快速的理念不相符合。

3. Redis事务命令

Redis事务命令
命令说明
MULTI 开启一个事务
EXEC 执行事务中的所有命令
WATCH key [key ...] 在开启事务之前用来监视一个或多个key 。如果事务执行时这些 key 被改动过,那么事务将被打断。
DISCARD 取消事务。
UNWATCH 取消 WATCH 命令对 key 的监控。

4. Redis事务应用

您可以把事务可以理解为一个批量执行 Redis 命令的脚本,但这个操作并非原子性操作,也就是说,如果中间某条命令执行失败,并不会导致前面已执行命令的回滚,同时不会中断后续命令的执行(不包含监听 key 的情况)。示例如下:

开启事务
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> INCR 1
QUEUED #命令入队成功
127.0.0.1:6379> SET num 10
QUEUED
#批量执行命令
127.0.0.1:6379> EXEC
1) (integer) 1
2) OK

若您在事务开启之前监听了某个 key,那么您不应该在事务中尝试修改它,否则会导致事务中断。

开启事务之前设置key/value,并监听
127.0.0.1:6379> set www.biancheng.net hello
OK
127.0.0.1:6379> WATCH www.biancheng.net
OK
127.0.0.1:6379> get www.biancheng.net
"hello"
#开启事务
127.0.0.1:6379> MULTI
OK
#更改key的value值
127.0.0.1:6379> set www.biancheng.net HELLO
QUEUED
127.0.0.1:6379> GET www.biancheng.net
QUEUED
#命令执行失败
127.0.0.1:6379> EXEC
(error) EXECABORT Transaction discarded because of previous errors.
#取消监听key
127.0.0.1:6379> UNWATCH 
OK 

在线练习工具:https://try.redis.io/
查看更多 Redis 命令:https://redis.io/commands

标签:24,事务,127.0,0.1,30,Redis,6379,key
From: https://www.cnblogs.com/jiajunling/p/16608300.html

相关文章

  • 29. Redis---RDB持久化
    1.前言Redis是一款基于内存的非关系型数据库,它会将数据全部存储在内存中。但是如果Redis服务器出现某些意外情况,比如宕机或者断电等,那么内存中的数据就会全部丢失。因......
  • 28. Redis---数据备份和还原
    1.前言RedisSAVE命令用于创建当前数据库的备份文件,文件名默认为dump.rdb。备份数据库数据可以增强对数据的保护,提升数据的安全性。当数据不小心丢失或者被删除时,我们就......
  • 26. Redis---分区技术
    1.前言Redis分区技术(又称RedisPartition)指的是将Redis中的数据进行拆分,然后把拆分后的数据分散到多个不同的Redis实例(即服务器)中,每个实例仅存储数据集的某一部分(......
  • 24. Redis---Lua脚本
    1.前言Redis事务的目的是方便用户一次执行多个命令。执行Redis事务可分为三个阶段:开始事务命令入队执行事务2.Redis事务特性Redis事务具有两个重要特性:1)......
  • 25. Redis---性能测试
    1.前言为了解Redis在不同配置环境下的性能表现,Redis提供了一种行性能测试工具redis-benchmark(也称压力测试工具),它通过同时执行多组命令实现对Redis的性能测试。性......
  • 22. Redis---地理位置
    1.前言在Redis3.2版本中,新增了存储地理位置信息的功能,即GEO(英文全称geographic),它的底层通过Redis有序集合(zset)实现。不过RedisGEO并没有与zset共用一套的命令......
  • Redis知识点总结
    Redis的淘汰策略有哪几种?volatile-lru从已设置过期时间的数据集中挑选最近最少使用的数据淘汰volatile-ttl从已设置过期时间的数据集中挑选将要过期的数据淘汰......
  • 21. Redis---消息队列
    1.前言RedisStream是Redis5.0版本引入的一种新数据类型,同时它也是Redis中最为复杂的数据结构,本节主要对Stream做相关介绍。2.什么是Stream?Stream实际上是......
  • redis集群新增结点slot迁移原理
    redis集群新增结点slot迁移原理写在前面:最近在复习redis知识点,遇到一个问题很疑惑,就是集群新增结点时,是将slot重新分配,然后移动?这样集群节点之间不就需要互相传送数据吗,......
  • Redis 主从复制
    概述主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器,前者称为主节点,后者称为从节点一个主节点可以有零个或多个从节点,但每个从节点只能有一个主节点......