RedisTemplate使用rightPushAll往list中添加时的注意事项


  问题第一次使用时rightPushAll,我以为这个方法就是直接把我们集合中的数据全部添加到redis的list里面,但是如果直接使用ArrayList类型添加,发现事情并不是我们想的这样,他并没有一个个遍历添加,而是把整个ArrayList当成一个值添加。

  通过源码可以看到,rightPushAll重载了两个同名方法,第一个方法是多值参数,第二个方法是一个Collection集合对象。但是调用的时候无论我们传的是Collection对象的子集,还是直接传入数组,通过idea进入方法,发现都是调用的第一个方法,这就造成了刚刚那个情况,直接把ArrayList当成多值参数里面的一个元素了。

    

  解决:当我们把ArrayList变成数组时,就变成我们想要的结果了,也就是一个个元素单独添加进去了。通过本地测试方法的重载发现,如果传的是集合对象,是直接走的第二个方法,并不会走第一个方法。所以这里是一个bug,具体原因未知。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM