为了账号安全,请及时绑定邮箱和手机立即绑定

跪求!小弟在使用redis的管道流中碰到个问题,批量添加数据的反馈结果不能知道

跪求!小弟在使用redis的管道流中碰到个问题,批量添加数据的反馈结果不能知道

慕森王 2019-09-19 13:29:28
问题描述使用管道流批量添加数据时,怎么能保证全部添加成功,怎样才能知道哪些数据添加成功了,哪些数据添加失败了问题出现的环境背景及自己尝试过哪些方法第一次添加返回值为[1,1,1,1,1,1,1,1........]第二次添加返回值为[2,2,2,2,2,2,2,2........]并不能知道其中添加的具体情况相关代码//请把代码文本粘贴到下方(请勿用图片代替代码)//批量增加redis手动领取红包批量添加publicListpatchAdd(Mapparams){//返回[1,true,1,true]1数据在list中的位置设置过期时间才会返回true和falseListreturnAll=redisTemplate.executePipelined(newSessionCallback(){@OverridepublicObjectexecute(RedisOperationsredisOperations)throwsDataAccessException{Setentries=params.entrySet();for(Map.Entryparam:entries){Stringkey=param.getKey();Listvalue=param.getValue();lSet(key,value);//过期时间以秒为单位}returnnull;}});returnreturnAll;}publicbooleanlSet(Stringkey,Listvalue){try{redisTemplate.opsForList().rightPushAll(key,value);returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}你期待的结果是什么?实际看到的错误信息又是什么?
查看完整描述

2 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

pipeline(管道流)可以简单看做是一批命令的顺序处理,redis自己是会按命令发出的顺序返回命令执行结果的,我推测java对redis的访问封装应该保持了这个特性所以你贴的返回值里[1,1,1,1,1,1,1,1........]里面的每一个1可能就是对应顺序的redis操作返回码
然后就是查文档的工作了,按返回码判断执行结果
                            
查看完整回答
反对 回复 2019-09-19
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

贴一下lset方法
publicbooleanlSet(Stringkey,Listvalue){
try{
redisTemplate.opsForList().rightPushAll(key,value);
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
                            
                            
查看完整回答
反对 回复 2019-09-19
  • 2 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消