原本以为自己对redis命令还蛮熟悉的,各种数据模型各种基于redis的骚操作。但是最近在使用redis的scan的命令式却踩了一个坑,顿时发觉自己原来对redis的游标理解的很有限。所以记录下这个踩坑的过程,背景如下:公司因为redis服务器内存吃紧,需要删除一些无用的没有设置过期时间的key。大概有500多w的key。虽然key的数目听起来挺吓人。但是自己玩redis也有年头了,这种事还不是
转载
2024-09-18 11:18:30
48阅读
# Redis Lua 脚本与回滚机制
在开发过程中,有时我们需要保证操作的原子性,即要么全部成功,要么全部失败。Redis Lua 脚本在这方面提供了一定的支持,但通常并不会内置回滚机制。本文将教你如何实现类似的效果。
## 流程概述
下面的表格展示了实现 Redis Lua 脚本类似回滚的整体流程。
| 步骤 | 说明 |
|------
原创
2024-10-16 04:11:22
286阅读
一:Redis的伪事务Redis会将一个事务中的所有命令序列化,然后按照顺序执行执行中不会被其他命令插入,不许出现加塞行为。从严格意义上来说,redis 是没有事务的。因为事务必须具备四个特点:原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability)。然后 redis 是做不到这四点,只是具备其中一些特征,redis的事务是个伪事
转载
2024-10-08 11:11:37
36阅读
前言事务是关系型数据库的特征之一,那么作为 Nosql 的代表 Redis 中有事务吗?如果有,那么 Redis 当中的事务又是否具备关系型数据库的 ACID 四大特性呢?Redis 有事务吗这个答案可能会令很多人感到意外,Redis 当中是存在“事务”的。这里我把 Redis 的事务带了引号,原因在后面分析。Redis 当中的单个命令都是原子操作,但是如果我们需要把多个命令组合操作又需要保证数据
转载
2023-08-17 09:28:52
116阅读
前言事务是关系型数据库的特征之一,那么作为 Nosql 的代表 Redis 中有事务吗?如果有,那么 Redis 当中的事务又是否具备关系型数据库的 ACID 四大特性呢?Redis 有事务吗这个答案可能会令很多人感到意外,Redis 当中是存在“事务”的。这里我把 Redis 的事务带了引号,原因在后面分析。Redis 当中的单个命令都是原子操作,但是如果我们需要把多个命令组合操作又需要保证数据
转载
2024-06-09 09:55:40
131阅读
前言redis作为当下比较热门的nosql 缓存中间件,使用起来非常简单,但是当我们需要让多个命令保持原子性时,应该如何使用呢,本文就来介绍下案例1、redis提供了事务操作,multi和exec指令,我们来简单的模拟一下首先启动redis服务,连接到客户端 执行完上述过程最后get k1的值是2,上述可以理解为multi开启了事务,只是多次set,此时的返回结果为QUEUED,代表进入了执行队列
转载
2023-08-15 17:49:05
90阅读
ssm的事物回滚实现案例事物回滚操作对于现在的我来讲,真是很少用到,但它的确是一个很实用的办法,特别是一次性要处理某一个用户的多条数据时;最近我就接触过一个这样的操作:业务是设置隐私保护,默认是无隐私保护的,用户在隐私设置页面不勾选的就会将用户数据保护起来,只能通过扫码验证才能访问;实现改操作使用事物回滚的原因:用户隐私保护设置数据并不是全部数据,仅仅只是未选中的,也就是说:数据库保存的只是用户设
转载
2024-06-20 07:28:05
32阅读
文章目录命令说明执行流程结果对比优势劣势注意 命令说明普通命令:只多个原生命令的执行。管道命令:在Redis提供的管道流中多个原生命令一次性发送,并在所有命令执行完一次性获取执行结果(使用限制:多个命令之间不存在返回结果上的依赖)。事务命令:开启事务后执行命令(使用限制:多个命令之间不存在返回结果上的依赖)。lua脚本命令:以lua脚本粘合多个原生命令,作为一个整体发送到服务器端执行。执行流程以
转载
2024-05-08 23:58:37
61阅读
# 如何实现Java RuntimeException的回滚
## 1. 整体流程
为了实现Java RuntimeException的回滚,我们通常会使用事务来管理数据库操作。当出现RuntimeException时,事务会自动回滚到之前的状态,保证数据的一致性。
下面是实现Java RuntimeException回滚的流程:
| 步骤 | 操作 |
| ---- | ---- |
|
原创
2024-02-27 04:01:12
164阅读
目录前言一、redis事务二、通过redis-cli体验redis事务相关命令1.开启事务2.放弃事务3.redis事务中的命令正确而数据类型错误、命令错误时的执行情况(1)、第一种情况-Redis 事务遇到的命令正确而数据类型不符合(2)、第二种情况-Redis 命令有错,事务中所有的命令都不会执行三、总结前言今天记录一下对redis事务的探索过程,各位看到此博客的小伙伴,如有不对的地方请及时通
转载
2023-08-04 12:52:01
198阅读
一提到事务,首先想到的是数据库的事务机制ACID, 原子性(Atomicity),一致性(Consistency),隔离性(Isolation)和持久性(Durability) Redis事务特性Redis 事务具有两个重要特性:1) 单独的隔离操作事务中的所有命令都会被序列化,它们将按照顺序执行,并且在执行过的程中,不会被其他客户端发送来的命令打断。2) 不保证原子性在 Re
转载
2023-11-06 14:20:36
127阅读
有读者问我为什么这么久都没有出Redis Lua中学教程,表示村头厕所已经好久没有纸了。其实我早就要写这篇中学教程了,奈何最近太忙了,就一拖再拖,直到今天我终于又开始动笔了。忘记Lua相关概念的同学中学教程主要分为两部分:Redis Lua的相关命令详解和Lua的语法介绍。前面我们简单介绍了EVAL和EVALSHA命令。但是只有那点只是是没办法从中学毕业的,因此我们需要进行更深入的学习。EVAL最
转载
2024-06-20 12:52:37
11阅读
# 项目方案:Redis中Lua脚本的回滚方案
## 项目简介
在使用Redis进行数据操作时,我们经常会用到Lua脚本进行复杂的操作。但是当Lua脚本执行失败时,我们需要一种回滚机制来保证数据的一致性。本项目提出了一个基于Redis事务和Lua脚本的回滚方案,以保证数据的完整性和一致性。
## 技术架构
本项目使用Redis作为数据存储,Lua脚本作为数据操作的逻辑处理器。在Lua脚本中,我
原创
2024-02-24 05:42:15
992阅读
主从配置(Sentinel和Failover)1. 结构图2. Master的redis.conf配置3. Slave的redis.conf配置4. 启动redis5. Sentinel.conf配置6. 启动sentinel7. 注意事项 1. 结构图设计结构图如下,三台物理机子; 192.168.0.101为Master,其余2台为Slave。2. Master的redis.conf配置#
转载
2023-10-11 09:59:16
42阅读
Redis 分布式锁redis分布式锁 ,我想大家都经常使用。在面试的时候,也经常被问到。那么,你是否真的认真思考过,redis分布式锁的优势和劣势呢,今天,正好改造一个单点的定时任务系统,就记录一下自己的思考吧!单点应用要升级分布书应用同事为了快速和供应商对接,在短时间内实现了一个定时推送的系统,用的spring中的定时任务Scheduled,快速实现了,并且应用单点部署到生产服务器上。 我接到
转载
2024-10-13 22:00:25
16阅读
事务的实现相对比较复杂,它是基于多种机制和方案共同保障而做到了。 比如,通过回滚机制实现事务的原子性;借助锁机制和MVCC(多版本并发控制)保证事务的隔离性和并发性;基于WAL、Checkpoint、Crash Recovery、重做或回滚等机制实现事务的持久性;通过约束一致性(唯一索引、外键、check、NOT NULL等完整性约束)和数据一致性(由原子性、隔离性、持久性等机制保证,尤其是持久性
转载
2024-09-24 14:20:45
25阅读
近期在做一个接口,采用的是Spring MVC的框架写的,但是当配置好框架,写完方法之后,发现在service层加了@Transactional注解的方式,竟然无效,无法进行事务的回滚,发现一般问题都不存在,一般@Transactional注解了,事务无法回滚是因为三个原因:1.方法可能不是public的声明2.异常类型是不是unchecked异常这个说明一下,在@Transactional注解事
转载
2024-07-08 22:04:48
77阅读
失效的几种原因:一、数据库或者数据表的存储引擎不是Innodb。 数据库与表的存储引擎必须是Innodb;因为这个存储引擎才支持事务;二、使用 出错时跳过错误(DECLARE CONTINUE HANDLE FOR SQLEXCEPTION),却没有把自动提交关闭。如果使用出错跳出(DECLARE EXIT HANDLE FOR SQLEXCEPTION),则不需要关闭自动提交。在开启事
转载
2023-07-14 17:43:38
162阅读
一、起因begin或者START TRANSACTION开始一个事务 rollback事务回滚 commit 事务确认 人们对事务的解释如下:事务由作为一个单独单元的一个或多个SQL语句组成,如果其中一个语句不能完成,整个单元就会回滚(撤销),所有影响到的数据将返回到事务开始以前的状态。因而,只有事务中的所有语句都成功地执行才能说这个事务被成功地执行。 这句话本身没有什么问题,
转载
2023-09-23 13:10:58
118阅读
try{
//出现异常
} catch (Exception e) {
e.printStackTrace();
//设置手动回滚
TransactionAspectSupport.currentTransactionStatus()
.setRollbackOnly
转载
2024-10-09 07:03:55
21阅读