【Redis】2-5 基于Redis优化首页轮播图查询

     目录

1. 内容概要

1.1 总结

2. 本书目录


1. 内容概要

场景分析:

        轮播图内容大部分时间是固定

类似场景:

        菜单列表,子菜单列表,设备列表,商品列表,秒杀商品总数,排名列表等

使用redis缓存好处:

  • 提升接口速度
  • 数据库降压

1.1 总结

1.1.1 优化逻辑

首先在redis中查询轮播图缓存

  • 如果不存在,数据库读取,并存入redis        
  • 如果存在,使用redis缓存数据

1.1.2 更新方式

  1. 后台运营系统,一旦广告(轮播图)发生更改,可以直接删除缓存
  2. 定时重置。如每日凌晨三点重置
  3. 过期时间。时间过期后有限展示优先级最高排序

1.1.3 代码

        技巧:List<T> 和 String 相互转换

    public IMOOCJSONResult carousel() {

        List<Carousel> list = new ArrayList<>();
        String carouselStr = redisOperator.get("carousel");
        if (StringUtils.isBlank(carouselStr)) {
        	
            list = carouselService.queryAll(YesOrNo.YES.type);
            redisOperator.set("carousel", JsonUtils.objectToJson(list));
        } else {
            list = JsonUtils.jsonToList(carouselStr, Carousel.class);
        }
        return IMOOCJSONResult.ok(list);
    }



    /**
     * JsonUtils.jsonToList方法
     * 
     * 将json数据转换成pojo对象list
     * @param jsonData
     * @param beanType
     * @return
     */
    public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
    	JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
    	try {
    		List<T> list = MAPPER.readValue(jsonData, javaType);
    		return list;
		} catch (Exception e) {
			e.printStackTrace();
		}
    	
    	return null;
    }

2. 本书目录

点击进入

posted @ 2023-02-06 16:47  随风落木  阅读(3)  评论(0编辑  收藏  举报  来源