Redis事物
redis事物定义:
》Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
》Redis事务的主要作用就是串联多个命令防止别的命令插队。(redis单线程的,所以不会线程抢占的情况)
命令队列
multi 、exec 、discard
》multi命令开始,后面的命令都会放入命令队列(quenen),但是不会执行,直到执行exec命令,才会顺序执行命令队列中的命令。
》如果想放弃组队,通过discard命令来通知redis.
事物的错误处理有两种:
》第一种命令组队时,报错。在执行时,整租所有的命令都会被取消。
》第二种是组队时不报错,执行时个别命令出错。则只有报错的命令不会执行,而其他命令正常执行,且不回滚。
WATCH key [key ...]
》在执行multi之前,先执行watch key.监视一个(或多个)key,如果执行事务之前,key被其他命令改了,那么该事务不能执行。
UNWATCH key
》取消监视
注意:如果在执行 WATCH 命令之后, EXEC 命令或 DISCARD 命令先被执行了的话,那么就不需要再执行 UNWATCH 了
两种锁机制:
》悲观锁:当一开始操作(读取、更改)数据时,就锁住该数据不让其他人操作,直到自己不再操作,才会释放锁。
》乐观锁:操作数据时,不会锁住资源,这样并发性好,但是会有一个版本号,当更新时,也会更新版本号。其他人会与版本号做对比,以确保读到的是最新的数据。
redis事务的三特性
》单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
》没有隔离级别的概念:队列中的命令没有提交之前都不会实际的被执行,因为事务提交前任何指令都不会被实际执行,也就不存在“事务内的查询要看到事务里的更新,在事务外查询不能看到”这个 让人万分头痛的问题 。
》不保证原子性 :Redis同一个事务中如果有一条命令执行失败,其后的命令仍然会被执行,没有回滚 。
Redis事物的更多相关文章
- Redis 事物
MULTI . EXEC . DISCARD 和 WATCH 是 Redis 事务的基础. Multi 和 Exec Multi:开启一个事务,它总是返回 OK .执行之后, 客户端可以继续向服务器发 ...
- Redis事物及锁的运用
redis与mysql事物比较如下: 下面是一个redis事物运用于买票的demo
- Redis 事物、悲观、乐观锁 (详细)
1,概论 事物这东西相信大家都不陌生吧,在学习Spring,Mybatis等框架中, 只要是涉及到数据存储和修改的,都会有事物的存在, 废话就不多说了下面我们来简单的介绍下Redis事物以及锁. 2, ...
- SpringBoot进阶教程(二十八)整合Redis事物
Redis默认情况下,事务支持被禁用,必须通过设置setEnableTransactionSupport(true)为使用中的每个redistplate显式启用.这样做会强制将当前重新连接绑定到触发m ...
- Redis - 事物控制和发布订阅
multi命令后续命令将进入队列,不会马上执行,当执行exec后,一次输出所有结果 事物回滚使用discard命令,放弃之前的输入执行. SUBSCRIBE/PUBLISH SUBSCRIBE KEY ...
- 使用redis事物解决stringRedisTemplate.setIfAbsent()并设置过期时间遇到的问题
spring-date-redis版本:1.6.2场景:在使用setIfAbsent(key,value)时,想对key设置一个过期时间,同时需要用到setIfAbsent的返回值来指定之后的流程,所 ...
- Redis常用数据类型和事物以及并发
Redis数据类型 基本类型(String int): 如 set key value .get key 等 所有命令都是按照 key value keys * 可以将全部数据列出,其中后面的 &qu ...
- Redis发布订阅和事物笔记
Redis 发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 cha ...
- Redis的事物
Redis的事物 Redis 事物常用命令 multi标记一个事物块的开始 exec:执行所有事物块内的命令 discard: 取消事物,放弃执行事物块的所有命令 watch key [k ...
随机推荐
- linux 压缩文件或文件夹
zip demo.mp4.zip demo.mp4 zip -r videos.zip videos # 压缩文件夹需要加-r
- 机器学习算法总结(五)——聚类算法(K-means,密度聚类,层次聚类)
本文介绍无监督学习算法,无监督学习是在样本的标签未知的情况下,根据样本的内在规律对样本进行分类,常见的无监督学习就是聚类算法. 在监督学习中我们常根据模型的误差来衡量模型的好坏,通过优化损失函数来改善 ...
- day03-课堂笔记-大纲
字典: # 字典循环: dic.keys() | dic.values() | dic.items()for k, v in dic.items(): print(k, v) # ...
- Linux shell判断文件和文件夹是否存在(转发)
#!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" #这里的-x 参数 ...
- 【转】AJAX请求和普通HTTP请求区别
两者本质区别: AJAX通xmlHttpRequest象请求服务器服务器接受请求返数据实现刷新交互 普通http请求通httpRequest象请求服务器接受请求返数据需要页面刷新 AJAX请求 普通请 ...
- Golang 学习资料
资料 1.How to Write Go Code https://golang.org/doc/code.html 2.A Tour of Go https://tour.golang.org/li ...
- Linux VNC安装
cat /etc/centos-release CentOS Linux release 7.4.1708 (Core) uname -r 3.10.0-693.el7.x86_64 VNC下载:ht ...
- 环境部署(八):jenkins配置邮件通知
完成基于jenkins的持续集成部署后,任务构建执行完成,测试结果需要通知到相关人员.这篇博客,介绍如何在jenkins中配置邮件通知的方法... 一.安装邮件插件 由于Jenkins自带的邮件功能比 ...
- 关于vue的混入使用
普通使用: 定义一个 mixin.js文件 随便定一些数据 记得后面导出 然后在需要用的文件 就可以获取了. 全局混合: 引入vue 全局注册混合 main.js 入口文件引入 然后就可以在所有页面使 ...
- Django适合做大用户量的系统吗?
分几点来答: 1. 首先,这其实是个技术选型题. 做技术选型的时候不能单纯的考虑性能,应该优先考虑业务类型,以及团队水平.另外的话,框架只是其中一环,还有配套呢. 如果是数据驱动型,尤其是要用到关系型 ...