RedisTemplate使用rightPushAll往list中添加時的注意事項


  問題第一次使用時rightPushAll,我以為這個方法就是直接把我們集合中的數據全部添加到redis的list里面,但是如果直接使用ArrayList類型添加,發現事情並不是我們想的這樣,他並沒有一個個遍歷添加,而是把整個ArrayList當成一個值添加。

  通過源碼可以看到,rightPushAll重載了兩個同名方法,第一個方法是多值參數,第二個方法是一個Collection集合對象。但是調用的時候無論我們傳的是Collection對象的子集,還是直接傳入數組,通過idea進入方法,發現都是調用的第一個方法,這就造成了剛剛那個情況,直接把ArrayList當成多值參數里面的一個元素了。

    

  解決:當我們把ArrayList變成數組時,就變成我們想要的結果了,也就是一個個元素單獨添加進去了。通過本地測試方法的重載發現,如果傳的是集合對象,是直接走的第二個方法,並不會走第一個方法。所以這里是一個bug,具體原因未知。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM