猿问

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

问题描述
使用管道流批量添加数据时,怎么能保证全部添加成功,怎样才能知道哪些数据添加成功了,哪些数据添加失败了
问题出现的环境背景及自己尝试过哪些方法
第一次添加返回值为[1,1,1,1,1,1,1,1........]第二次添加返回值为[2,2,2,2,2,2,2,2........]并不能知道其中添加的具体情况
相关代码
//请把代码文本粘贴到下方(请勿用图片代替代码)//批量增加redis手动领取红包批量添加
publicListpatchAdd(Map>params){
//返回[1,true,1,true]1数据在list中的位置设置过期时间才会返回true和false
ListreturnAll=redisTemplate.executePipelined(newSessionCallback(){
@Override
publicObjectexecute(RedisOperationsredisOperations)throwsDataAccessException{
Set>>entries=params.entrySet();
for(Map.Entry>param: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;
}
}
你期待的结果是什么?实际看到的错误信息又是什么?

		
炎炎设计
浏览 934回答 2
2回答

慕妹3242003

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

心有法竹

贴一下lset方法publicbooleanlSet(Stringkey,Listvalue){try{redisTemplate.opsForList().rightPushAll(key,value);returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答