redistemplate 操作list集合多[]符号


List<String> list = new ArrayList<>();

list.add("1");
list.add("2");
list.add("3");
list.add("4");

  redistemplate.opsForList().rightPushAll("test", list);

System.out.println("数据为:  "+redistemplate.opsForList().range("test", 0, -1));

数据为: [ [ 1,2,3,4] ]

长度是1 为啥我看其他人也是这样添加不会这样,求解.

img

经过测试没有出现你这个问题哦

img

img

你点击进去
redistemplate.opsForList().range
看看range返回的数据类型,同时看看你的版本号,
比如我的

public List<V> range(K key, final long start, final long end) 

public Long rightPushAll(K key, V... values)

断点打在 DefaultListOperations的rightPushAll 看看 values的数据类型
然后断点打在 DefaultListOperations 的range 上面debug 看看返回的数据类型


@RunWith(SpringRunner.class)
@SpringBootTest

public class Test {

    @Autowired
    private RedisTemplate  redisTemplate;

    @Autowired
    private StringRedisTemplate   stringRedisTemplate;

    @Test
    public void test() {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        stringRedisTemplate.opsForList().rightPushAll("testx", list);
        System.out.println("数据为:  " + stringRedisTemplate.opsForList().range("testx", 0, -1));
    }
}

运行结果:
数据为: [1, 2, 3, 4]