Redis系列学习(三)之java api接入及事务 (补)
2017-08-20 16:54
267 查看
Redis系列学习(三)之java api接入及事务 (补)
一 引言
二 事务例子补充
三 watch命令
一、 引言
本篇为补充《Redis系列学习(三)之java api接入及事务》文章里事务的例子二、 事务例子补充
没加事务private void testTransaction(){ System.out.println("======================测试事务=========================="); jedis.set("sex", "man"); jedis.incr("sex"); jedis.set("hello", "world"); }
结果如下:
数据库查看:
先添加“sex=man”数据,然后调用”incr”命令做加1操作,由于值”man”不是整型,所以加1操作发生了运行时错误,抛错之后的命令不会继续执行,我们看到运行时发生的错误,但还是成功。
如果加上事务会怎样?上篇文章讲“运行时错误,即使发生的错误,已经修改的值并不会回滚,并且后面命令会继续执行”,下面验证一下。
private void testTransaction(){ System.out.println("======================测试事务=========================="); Transaction transaction = jedis.multi(); transaction.set("sex", "man"); transaction.incr("sex"); transaction.set("hello", "world"); transaction.exec(); }
IDE结果如下图:
中间“transaction.incr(“sex”);”命令返回了执行错误消息,但后面命令还是继续执行。
数据库如下图
虽然发生了运行时错误,但并没有报异常错误,而且发生错误的地方后面命令还继续执行。
运行时发生的错误,即使错误发生(redis接收并执行,并没有把它当作错误来处理),后面的命令也会继续执行。
三、 watch命令
WATCH命令可以监控一个或多个键,一旦其中有一个键被修改(或删除),之后的事务就不会执行。监控一直持续到EXEC命令(事务中的命令是在EXEC之后才执行的,所以在MULTI命令后可以修改WATCH监控的键值)例子:
private void testTransaction(){ System.out.println("======================测试事务=========================="); jedis.watch("sex"); jedis.set("sex", "man2"); Transaction transaction = jed c80f is.multi(); transaction.set("country", "china"); transaction.set("sex", "female"); transaction.set("hello", "world"); List<Object> results = transaction.exec(); System.out.println(results.toString()); }
数据库结果如下图
例子里,原始数据是“sex=man”,代码里先使用watch监控sex字段,然后修改sex=man2,虽然在事务命令队列里再将set设置”female”,但结果sex=man2。由些我们可以知道由于在开启事务之前sex被修改了,导致之事务里的命令全部不会执行,这里强调“事务队列里命令全部不会执行”
相关文章推荐
- Redis系列学习(三)之java api接入及事务
- Redis缓存技术学习系列之事务处理
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- Redis系列学习笔记12 事务
- Redis 事务和Pipeline--JAVA(系列文章三)
- Redis缓存技术学习系列之事务处理【转】
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- 大数据学习系列之三 ----- HBase Java Api 图文详解
- java事务大总结(三) 理解学习 JTA(Java Transaction API)
- 大数据学习系列之三 ----- HBase Java Api 图文详解
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- Redis缓存技术学习系列之事务处理
- Redis缓存技术学习系列之事务处理
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- 分布式缓存技术redis学习系列(三)——redis高级应用(主从、事务与锁、持久化)
- Hadoop概念学习系列之hadoop Java API、 hadoop Streaming 、hadoop Pipes 三者比较学习(十九)
- java学习灯塔系列,引言