首页 > 数据库 >31. Redis---AOF持久化

31. Redis---AOF持久化

时间:2022-08-20 18:25:25浏览次数:94  
标签:AOF 事务 127.0 0.1 31 Redis --- 6379 key

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

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

1. Redis事务特性

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

1) 单独的隔离操作

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

2) 不保证原子性

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

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

2. Redis事务命令

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

3. 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

标签:AOF,事务,127.0,0.1,31,Redis,---,6379,key
From: https://www.cnblogs.com/jiajunling/p/16608326.html

相关文章

  • "蔚来杯"2022牛客暑期多校训练营3 C-Concatenation
    问题描述NIOwasthekingoftheOINKingdom.HehadNNNchildrenandwantedtoteachthemhowtocount.IntheOINKingdom,pentalisusedincounting,sohis......
  • "蔚来杯"2022牛客暑期多校训练营2 G-Link with Monotonic Subsequence
    问题描述First,let'sreviewsomedefinitions.Feelfreetoskipthispartifyouarefamiliarwiththem.Asequence aaaisanincreasing(decreasing)subsequ......
  • 30. Redis---事务(24补充)
    1.前言Redis事务的目的是方便用户一次执行多个命令。执行Redis事务可分为三个阶段:开始事务命令入队执行事务2.Redis事务特性Redis事务具有两个重要特性:1)单......
  • 29. Redis---RDB持久化
    1.前言Redis是一款基于内存的非关系型数据库,它会将数据全部存储在内存中。但是如果Redis服务器出现某些意外情况,比如宕机或者断电等,那么内存中的数据就会全部丢失。因......
  • 28. Redis---数据备份和还原
    1.前言RedisSAVE命令用于创建当前数据库的备份文件,文件名默认为dump.rdb。备份数据库数据可以增强对数据的保护,提升数据的安全性。当数据不小心丢失或者被删除时,我们就......
  • 26. Redis---分区技术
    1.前言Redis分区技术(又称RedisPartition)指的是将Redis中的数据进行拆分,然后把拆分后的数据分散到多个不同的Redis实例(即服务器)中,每个实例仅存储数据集的某一部分(......
  • ubuntu内网穿透-frp
    下载https://github.com/fatedier/frp/releases参考https://cloud.tencent.com/developer/article/1452168代理服务端 ./frps-cfrps.ini&修改frps.ini设置监听端......
  • 24. Redis---Lua脚本
    1.前言Redis事务的目的是方便用户一次执行多个命令。执行Redis事务可分为三个阶段:开始事务命令入队执行事务2.Redis事务特性Redis事务具有两个重要特性:1)......
  • JAVA基础--类型转换--2022年8月20日
    第一节1、为什么要进行类型转换存在不同类型的变量给赋值给其他类型的变量2、自动类型转换是什么样的类型范围小的变量,可以直接赋值给类型范围大的变量 第......
  • 25. Redis---性能测试
    1.前言为了解Redis在不同配置环境下的性能表现,Redis提供了一种行性能测试工具redis-benchmark(也称压力测试工具),它通过同时执行多组命令实现对Redis的性能测试。性......