redis的事务-redis系列教程
来源:互联网 发布:淘宝千人大咖登陆入口 编辑:程序博客网 时间:2024/05/22 19:49
概述
redis的事务就是一组命令的集合,它们被顺序的执行,如果取消事务的执行那么事务中的命令全部都不会执行。
- redis的事务仅仅是保证事务里的操作会被连接独占的执行,因为是单线程架构所以在执行完事务内的所有指令前是不可能再去同时执行其他客户端的请求。
- redis的事务没有隔离级别的概念,因为事务提交前任何指令都不会被实际执行,也就不存在“事务内的查询要看到事务里的更新,在事务外查询不能看到”这种问题。
- redis的事务不保证原子性,也就是不保证所有指令同时成功或同时失败,只能决定是否开始执行全部指令的能力,没有执行到一半进行回滚的能力。
事务的基本过程
- 发送一个事务的命令
multi
给redis; - 依次发送要执行的命令给redis,redis接收到这些命令后并不会立即执行,而是放到等待执行的事务队列里面;
- 发送执行事务的命令
exec
给redis。 - redis保证一个事务内的命令依次执行,而不会被其它命令插入到中间;
- 如果想放弃事务使用命令
discard
。
事务过程中的错误处理
- 如果任何一个命令语法有错,redis会直接返回错误,所有的命令都不会执行。
- 如果某个命令执行错误,那么其它的命令仍然会正常执行,然后在执行后返回错误信息。
- redis不提供事务回滚的能力,开发者必须在事务执行出错后自行恢复数据库状态。
事务操作的基本命令
multi
开启事务exec
执行事务discard
放弃事务watch
监控键值。如果键值被修改或删除,后面的一个事务就不会执行。unwatch
取消watch
Watch说明
- redis使用watch来提供乐观锁定,类似于CAS(check-and-set)
- watch可以被调用多次
- 当exec被调用后所有之前被监视的键值会被取消监视,不管事务是否被取消或者执行。并且当客户端连接丢失的时候所有东西都会被取消监视。
示例
127.0.0.1:6379[2]> set key1 aOK127.0.0.1:6379[2]> set key2 bOK127.0.0.1:6379[2]> keys *1) "key1"2) "key2"127.0.0.1:6379[2]> multiOK127.0.0.1:6379[2]> set key1 aaaQUEUED127.0.0.1:6379[2]> set key2 bbbQUEUED127.0.0.1:6379[2]> exec1) OK2) OK127.0.0.1:6379[2]> get key1"aaa"127.0.0.1:6379[2]> get key2"bbb"
阅读全文
1 0
- redis的事务-redis系列教程
- Redis 讲解系列之 Redis的事务
- redis的集群-redis系列教程
- Redis事务--Redis系列七
- Redis教程6--Redis事务
- redis系列--事务
- Redis教程分享系列
- Redis教程(八):事务详解
- Redis教程(八):事务详解
- redis的事务
- Redis的事务
- redis的事务
- Redis的事务
- Redis的事务
- 基本的Redis事务
- 6.Redis的事务
- redis的事务
- Redis的事务
- 快排 qsort
- Struts2数据封装
- FileReader图片数字化
- linux上部署java项目
- [leetcode]72. Edit Distance(Java)
- redis的事务-redis系列教程
- htmlunit使用教程爬取网站的数据并保存成Excel表格
- 一类甘油三酯
- Struts2 2) 常用的constant总结
- 知识图谱1-【什么是RDF?】
- 【TK】1010:平均绩点分数
- Scikit-learn技巧(拓展)总结
- 阿里云服务器MySQL安装、登录以及密码的修改
- posix 线程(一)