基本的Redis事务
来源:互联网 发布:宿迁市12345网络问政 编辑:程序博客网 时间:2024/05/19 22:01
什么是Redis的基本事务
Redis的基本事务需要用到MULTI命令和EXEC命令,这种事务可以让一个客户端在不被其他客户端打断的情况下执行多个命令。和关系数据库的rollback不同,在Redis里面,被MULTI命令和EXEC命令包围的所有命令会一个接一个地执行,直到所有命令都执行完毕为止。当一个事务执行完毕后,Redis才会处理其他客户端的命令。
使用Java多线程测试redis事务
代码如下:
package transaction;import redis.clients.jedis.Jedis;import redis.clients.jedis.Pipeline;public class RedisTransaction implements Runnable{ private Jedis conn; public RedisTransaction(Jedis conn) { // TODO Auto-generated constructor stub this.conn=conn; } @Override public void run() { // TODO Auto-generated method stub Pipeline pipeline=conn.pipelined(); System.out.println(Thread.currentThread().getName()+"开始"); pipeline.incr("trans:");//第一个流水线放入队列 try { Thread.sleep(100); pipeline.incrBy("trans:",-1);//第二个流水线放入队列 System.out.println(Thread.currentThread().getName()+"完成"); pipeline.exec();//执行这两条命令。 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args){ Thread thread=null; Jedis conn=new Jedis("localhost"); System.out.println("执行前:"+conn.get("trans:")); for(int i=0;i<3;i++){ new Thread(new RedisTransaction(new Jedis("localhost"))).start(); } try { Thread.sleep(1000); System.out.println("全部完成"); System.out.println("执行后:"+conn.get("trans:")); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
执行结果:
执行前:1Thread-2开始Thread-0开始Thread-1开始Thread-2完成Thread-0完成Thread-1完成全部完成执行后:1
结论:
通过使用事务,各个线程都可以在不被其他线程打扰的情况下,执行各自队列里面的命令。
注意
redis要在接收到EXEC命令之后,才会执行那些位于MULTI和EXEC之间的入队命令。
阅读全文
0 0
- 基本的Redis事务
- redis的事务
- Redis的事务
- redis的事务
- Redis的事务
- Redis的事务
- 6.Redis的事务
- redis的事务
- Redis的事务
- redis的事务
- Redis的事务
- redis 事务的特性
- 事务的基本写法
- redis的事务-redis系列教程
- Redis lesson13 Redis的事务机制
- Redis 讲解系列之 Redis的事务
- Redis笔记(五)Redis的事务
- redis事务的那些事情
- 为什么linux下多线程程序如此消耗虚拟内存
- 2017.07.15【NOIP提高组】模拟赛B组小结
- 8. String to Integer (atoi)
- 哇塞,不错的js--前端中的小算法
- hdu 1159 Common Subsequence
- 基本的Redis事务
- MYSQL 数据库内容出现中文乱码的解决办法
- 使用Windows Caffe 建立Qt工程 运行SSD(Single Shot MultiBox Detector)目标检测算法
- 博客每日访问量
- 图论500题
- jsp自动刷新
- 关于第一次使用redis的这件事
- css之负外边距
- 计算机系统要素:第三章 时序逻辑