redis写入多条数据.排队列的时候有了异常.该怎么处理

问题描述

redis写入多条数据.排队列的时候有了异常.该怎么处理

如果
public void test2Trans() {
long start = System.currentTimeMillis();
Transaction tx = jedis.multi();
try{
for (int i = 0; i < 100000; i++) {
tx.set("t" + i, "t" + i);
}
}catch(Exception e){
tx.discard();
}
List results = tx.exec();
long end = System.currentTimeMillis();
System.out.println("Transaction SET: " + ((end - start)/1000.0) + " seconds");
}

    假设代码在try{}模块出现问题,那么catch{}模块直接取消事务的话.那么如何让这段代码实现rollback;
    上面代码是个人猜想.求大神帮忙

解决方案

出现异常的位置有两种情况:
1. 在exec之前;
2. 在exec执行时;
在exec之前出现异常,使用discard可以rollback,
在exec执行中时,即使出现异常,redis也不会终止和rollback,而是继续执行。
官方这样解释不支持回滚:
Redis is internally simplified and faster because it does not need the ability to roll back.
An argument against Redis point of view is that bugs happen, however it should be noted that in general the roll back does not save you from programming errors. For instance if a query increments a key by 2 instead of 1, or increments the wrong key, there is no way for a rollback mechanism to help. Given that no one can save the programmer from his errors, and that the kind of errors required for a Redis command to fail are unlikely to enter in production, we selected the simpler and faster approach of not supporting roll backs on errors.

时间: 2024-12-31 21:49:06

redis写入多条数据.排队列的时候有了异常.该怎么处理的相关文章

c-C语言数据库编程,往数据库中写入一条数据,编译出错

问题描述 C语言数据库编程,往数据库中写入一条数据,编译出错 #include #include #include char userid[10] = "gaps/gaps"; int main() { char yw_xh[8] = "2"; char yw_xm[20] = "王小二"; char yw_xb = 'W'; char yw_yx[50] = "气象学院"; int yw_ywcj = 80; int yw_

文件读取-c++ 修改文件中的一条数据(不完全读出再重新写入)

问题描述 c++ 修改文件中的一条数据(不完全读出再重新写入) 假设现在文件中存储的是 1 computer 2 computer 3 computer 三条记录, 我想把第一条数据改成 5 computer, 但是想要直接用write在文件首部写入5 computer 把1 computer 覆盖掉,而不是把数据全部读出后修改完再重新写入,就像c语言的 fwrite函数,不知如何操作?谢谢了 解决方案 http://bbs.csdn.net/topics/340168885 fwrite也可以

jxl 数据库中几十万条数据写入Excel 内存溢出

问题描述 各位大虾.我用jxl将数据写入Excel报错:java.lang.OutOfMemoryError:Javaheapspace我从网上找了很多方法,如将每1万条数据写入一个sheet中,修改Xmx参数增加堆的最大使用内存.但是还是出错.跪谢了. 解决方案 解决方案二:优化一下代码,及时释放内存,应该可以的解决方案三:那是因为你需要的内存远远大于你设置的内存大小必须要一次性全部写入么,不能写一个sheet保存一下然后下一个sheet

[转载] 黄志敏:一条数据新闻是如何用7步生产出来的?

PS:文章主要转载自36大数据的文章:           http://www.36dsj.com/archives/33280      最近同学找工作,在百度搜索引擎面试时就被问到"一条新闻是如何被发现的呢?"我能想到就是实时性,某段时间内突然关注的词汇可能是新闻,再或则是通过模板打分判断.      下面这篇文章就详细讲述了一条数据新闻是如何产生的?遗憾的是没有论述如何探索一条信息是有价值的新闻.但同样希望对你有所帮助,尤其是从事搜索引擎.信息挖掘相关的专业或面试的同学. 9月

android SQLite数据库 一次性存储多条数据

在开发当中往往要一次性的把很多的预设信息存到数据库.对于新手来说就是一个比较头疼的问题了. 不可能通过for循环一遍一遍的执行inert语句,这样的效率很低很低,在手机上存500条数据,好很长时间. 通过搜索网上资料,大致有三种方法: 1.通过";"拼字符串,如:"insert into table values (x,x,x);insert into table values (x,x,x);insert into table values (x,x,x);" 2

resultmap-用mybaits的resultMap查询数据时,为什么只能返库的最后一条数据

问题描述 用mybaits的resultMap查询数据时,为什么只能返库的最后一条数据 select tb_item.* tb_item_pic.id as itemPic_id tb_item_pic.item_id tb_item_pic.url from tb_item tb_item_pic where tb_item.id=tb_item_pic.item_id and tb_item.id in open=""("" separator="&q

PgSQL · 应用案例 · HDB for PG特性(数据排盘与任意列高效率过滤)

背景 数据也有生辰八字,你信吗?列与列之间,行与行之间,元素与元素之间如何相生相克?查询慢?不要信什么这都是上天注定的,如何给数据改运?看完本文,你也可以做到. 一份天赋,九份努力.缘分天注定.命由天定.又有说我命由我不由天的.看样子中国古人对先天注定的东西研究还挺透彻,看的还挺开,但是也有通过后天努力,或者后天改运等等手段来弥补先天不足的. 实际上在准备写本文时,我发现数据库的数据编排,数据存放和中国的命理相关的传统文化还很相似,也存在先天因素和后天补救的说法. 怎么回事呢?且听我细细道来.

linux 管道 父进程写入管道的数据,其他进程没有处理怎么办?

问题描述 linux 管道 父进程写入管道的数据,其他进程没有处理怎么办? #include #include int main(void) { int n; char line[MAXLINE]; int fd[2]; pid_t pid; //create the pipe if(pipe(fd)<0) err_sys("pipe error!"); if((pid = fork()) < 0 ){ err_sys("fork error"); }

平台终端吞吐量每秒达到2万设备,每秒插入2万条数据技术方案

问题描述 平台终端吞吐量每秒达到2万设备,每秒插入2万条数据技术方案 5C 目前由于平台要处理2万设备,每秒能处理2万条数据,之前使用ActiveMQ,不能达到需求了,之前测试rabbitMQ,Redis 之类,在测试机子上面都不能达到需求,本地测试 模拟1000个线程并发处理,一个线程处理1000插入数据,始终未能达到!不知道大家有没什么好的解决方案能达到这种需求的? 解决方案 单机很难达到这样的吞吐量,需要使用负载平衡了. 解决方案二: 同多台机器分布式处理吧. 解决方案三: hadoop等