6.Redis的事务
来源:互联网 发布:手机淘宝微淘在哪里 编辑:程序博客网 时间:2024/05/29 09:16
Redis的事务:
Redis中的事务(transaction)是一组命令的集合。事务同命令一样都是Redis的最小执行单元,一个事务中的命令要么都执行,要么都不执行。
事务的原理是先将属于一个事务的命令请求打包发送给Redis,然后再让Redis一次性、按顺序地执行这些命令。
在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它会将事务中的所有命令都执行完毕,然后才去处理其他客户端的命令请求。
事务示例:
redis> MULTI
OK
redis> SADD "user:1:following" 2
QUEUED
redis> SADD "user:2:followers" 1
QUEUED
redis> EXEC
1) (integer) 1
2) (integer) 1
上面的代码演示了事务使用方式。
首先MULTI命令告诉Redis,下面的命令属于一个事务,先缓存不执行;
Redis回答OK;
发送两个SADD命令,Redis没有执行命令,而是放入等待队列QUEUED;
要执行的命令发送完毕后,发送EXEC命令告诉Redis可以执行了;
Redis将等待执行的命令按照发送顺序执行,并依次返回执行结果。
事务的ACID性质
在Redis中,事务总是具有原子性(Atomicity)、一致性(Consistency)和隔离性(Isolation),并且当Redis运行在某种特定的持久化模式下时,事务也具有耐久性(Durability)。
原子性:事务中的所有命令打包一次性执行,不允许插队;
一致性:Redis通过谨慎的错误检测和简单的设计来保证;
隔离性:单线程执行事务,并保证执行期间不会中断;
耐久性:需要特定的持久化模式支持。
故障处理:
如果在发送EXEC命令前客户端断线,则Redis会清空事务队列,所有命令都不执行;但如果已经发送了EXEC命令后客户端断线,则Redis会执行所有命令的。
Redis的事务还能保证一个事务内的命令依次执行而不被其他命令插入。
如果一个事务中的某个命令执行出错,Redis会如何处理?
当在命令执行前出现错误,如语法错误,Redis会直接返回错误,所有命令都不执行;
当在命令执行中出现错误,如执行某个命令时运行时错误,由于执行前无法发现,Redis会接受并执行,所有命令都会执行。
Redis的事务没有关系数据库事务提供的回滚(rollback)功能。
- 6.Redis的事务
- redis的事务
- Redis的事务
- redis的事务
- Redis的事务
- Redis的事务
- 基本的Redis事务
- redis的事务
- Redis的事务
- redis的事务
- Redis的事务
- redis 事务的特性
- redis的事务-redis系列教程
- Redis lesson13 Redis的事务机制
- Redis 讲解系列之 Redis的事务
- Redis笔记(五)Redis的事务
- redis事务的那些事情
- Redis的事务、管道、分布式
- DataTable添加列和行的三种方法
- C语言宏定义和几个坑
- hadoop简易集群搭建
- Hibernate 的原生sql查询转map setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
- 如何解决使用addBatch()和executeBatch()无法批量增加删除修改数据库数据等问题
- 6.Redis的事务
- py-faster-rcnn用自己的数据训练模型
- mac Java多版本配置
- 此声明没有存储类或类型说明符?
- LightOJ 1289 LCM from 1 to n
- ubuntu14.04更新gcc/g++4.9.2
- String类型的方法
- 每天积累(四)--mybatis二级缓存
- 基于redis(key分段,避免一个key过大) 和db实现的 布隆过滤器(解决hash碰撞问题)