Dandelion_rain 2020-06-09 14:04 采纳率: 0%
浏览 2708
已结题

关于RedisTemplate的rightpushall方法问题

最近在跟着视频学redis
在学到rightpushall方法时出现了问题.
在调用rightpushall方法之后发现插入到redis的结果是这样的,全都插入到一行上了
图片说明

老师的方法插入之后是这样的
图片说明

@Service
@Slf4j
public class ListCacheServiceImpl {
    @Resource
    private RedisTemplate<String,Object> redisTemplate;

    /***
     * 需求分析
     *  显示当前最新的5天文章信息
     *  1.初始化 存5个文章信息
     *  2.添加文章
     *  3.删除文章
     *
     */

    public void initArticle(){
        String key = "article:Top5";
        //在mysql中查询5个文章

        LocalDateTime localDateTime = LocalDateTime.now();  //当前时间
        String dateTime = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd:mm:ss"));

        List<Article> lists = new ArrayList<>();
        for (int i = 1; i < 6; i++) {
            Article AR = new Article();
            AR.setId("1000" + i);
            AR.setTitle("文章标题" + i);
            AR.setContent("文章内容" + i);
            AR.setAuthor("作者"  +i);
            AR.setCreateDate(dateTime);
            AR.setClickNum(new Random().nextInt(1000) + 1);
            lists.add(AR);
            //redisTemplate.opsForList().rightPush(key,AR);

        }
        log.info("-> 存入redis指定key中->");
        redisTemplate.opsForList().rightPushAll(key,lists);


    }



}

我查了资料也没弄清楚是咋回事,最后我换一种思路就好了..

@Service
@Slf4j
public class ListCacheServiceImpl {
    @Resource
    private RedisTemplate<String,Object> redisTemplate;

    /***
     * 需求分析
     *  显示当前最新的5天文章信息
     *  1.初始化 存5个文章信息
     *  2.添加文章
     *  3.删除文章
     *
     */

    public void initArticle(){
        String key = "article:Top5";
        //在mysql中查询5个文章

        LocalDateTime localDateTime = LocalDateTime.now();  //当前时间
        String dateTime = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd:mm:ss"));


        for (int i = 1; i < 6; i++) {
            Article AR = new Article();
            AR.setId("1000" + i);
            AR.setTitle("文章标题" + i);
            AR.setContent("文章内容" + i);
            AR.setAuthor("作者"  +i);
            AR.setCreateDate(dateTime);
            AR.setClickNum(new Random().nextInt(1000) + 1);

            redisTemplate.opsForList().rightPush(key,AR);

        }
        log.info("-> 存入redis指定key中->");


    }



}

图片说明

但最终还是没用明白最开始的那个错误是怎么回事..

  • 写回答

1条回答 默认 最新

  • syyyyyyyyyyyyyyh 2020-06-09 20:54
    关注

    称不上是错误吧,第一种方式,只存了一次数据,所以把所有数据都放到了一个redis值下。你看他数据格式是[[],[]]这种形式。 第二种方式存了五次,所以就分成五个redis值存入

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月16日

悬赏问题

  • ¥15 MMdetection安装
  • ¥15 STM32U535系列stop3模式进入和RTC唤醒
  • ¥15 如何提取全民K歌没下载过但播放过很多次的音频?
  • ¥15 树莓派运行detect.py
  • ¥15 pdfplumber提起文本内容如何过滤水印内容
  • ¥15 kingbase容器启动失败,sudo:/bin/sudo must be owned by uid 0 and have the setuid bit set
  • ¥20 黑神话悟空调用机械硬盘导致卡顿
  • ¥15 vue中使用antv-x6
  • ¥15 qt编译失败,环境变量已加,但还是报错
  • ¥15 minted包显示缩进符的问题