Redis缓存查询数据(测试)

本文介绍了一种结合Redis和MySQL的数据缓存策略。首先检查Redis中是否存在所需数据,若存在,则直接从Redis读取;若不存在,则从MySQL查询并将结果存入Redis。文章详细展示了如何使用Java实现这一策略,包括单个对象和List对象的缓存操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案例:查询 如果redis有数据则使用redis数据 如果没数据则从mysql查 使用mysql的数据 然后存入redis

1.存单个对象

 /**
     *
     * 单个对象缓存在redis
     * @param id
     * @return
     */
    @GetMapping("/redis")
    public User redisTest(Long id)
    {
        log.info("参数:"+id);
        String redisKey ="redis"+id;
        //判断key是否存在
        boolean exists= redisUtil.exists(redisKey);
          if (exists)
          {
              //从redis读取
             String json= redisUtil.get(redisKey,0);
             log.info("从redis读取json:"+json);
             //反序列化为对象
             User user =JSON.parseObject(json,User.class);
             return user;
          }
          else
          {
              //从mysql查
              User user=iUserService.selectById(id);
              //转成json字符串 存入redis
              String userJson= JSON.toJSONString(user);
              log.info("从mysql读取userJson:"+userJson);
              //存入redis
              redisUtil.set(redisKey,userJson,0);
              //设置过期时间
              redisUtil.expire(redisKey,2000,0);
              return  user;
          }


      //User userInfo =iUserService.selectById(id);


       /* redisUtil.set("900","1000",1);
        String value= redisUtil.get("900",0);
        System.out.println(value);*/

       //删除
       /* Long del= redisUtil.del("11","111");
        System.out.println(del)*/

        //追加
      /*  Long len= redisUtil.append("900","888");
        System.out.println(len);*/
     // redisUtil.flushDB();

    }

2.缓存List<对象>

/**
     * List 存贮
     *
     * @return
     */
    @GetMapping("/selectAll")
    public List<User> selectAll()
    {
        String redisKey ="redisList";
        //判断key是否存在
        boolean exists= redisUtil.exists(redisKey);
        if (exists)
        {
            //从redis读取
            String json= redisUtil.get(redisKey,0);
            log.info("从redis读取json:"+json);
            //反序列化为对象
            List<User> user =JSON.parseArray(json,User.class);
            return user;
        }
        else
        {
            //从mysql查
            List<User> user=iUserService.selectList(new EntityWrapper<>());
            //转成json字符串 存入redis
            String userJson= JSON.toJSONString(user);
            log.info("从mysql读取userJson:"+userJson);
            //存入redis
            redisUtil.set(redisKey,userJson,0);
            //设置过期时间
            redisUtil.expire(redisKey,2000,0);
            return  user;
        }



    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值