最近项目在用RedisTemplate的opsForList进行对象集合的存储并进行分页查询
可是当使用redisTemplate.opsForList().rightPushAll(key, lists);
默认走了Long rightPushAll(K var1, V… var2);
并没有走Long rightPushAll(K var1, Collections c);

试了多种方式:

  • 将lists类型强转为Collection,
  • 将lists转为String[],
    最后都没有成功。只会存储一个整体的对象,导致无法使用range(),来进行分页查询。为了使用range()进行分页查询。
    只能采取曲线救国的方案,通过循环调用redisTemplate.opsForList().rightPush(key, object);

最终redis里存的数据为list集合数据。
在这里插入图片描述


经过跟同事的讨论和分析,原因是由于我们的统一工具类的参数问题导致的,将工具类的入参定位List;上面问题已经得到解决:
再调用rightPushAll的时候。传给redisTemplate.opsForList().rightPushAll(key, object);的是object。把这个类型改为List即可。
顺利完成集合数据批量插入到redis的list结构。

传送门:

缓存Redis分页,Java内存分页。

-------------欢迎各位留言交流,如有不正确的地方,请予以指正。【Q:981233589】

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐