首页 > 其他分享 >综合案例-黑马旅游网_分类数据展示缓存优化

综合案例-黑马旅游网_分类数据展示缓存优化

时间:2022-08-25 21:33:33浏览次数:77  
标签:category 缓存 redis 旅游网 cs import com 黑马 bai

综合案例-黑马旅游网_分类数据展示缓存优化

分析发现,分类的数据在每一次页面加载后都会重写请求数据库来加载 对数据库压力比较大 而且分类的数据不会经常产生变化 所有可以使用redis来缓存这个数据

图解分析

 

 代码实现

希望数据中存储的顺序是将来展示的顺序

categoryServiceImpl类

package com.bai.service.impl;

import com.bai.dao.CategoryDao;
import com.bai.dao.impl.CategoryDaoImpl;
import com.bai.domain.Category;
import com.bai.service.categoryService;
import com.bai.util.JedisUtil;
import redis.clients.jedis.Jedis;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

public class categoryServiceImpl implements categoryService {
    private CategoryDao categoryDao = new CategoryDaoImpl();

    @Override
    public List<Category> findAll() {
        //从redis中查询
        //获取jedis客户端
        Jedis jedis = JedisUtil.getJedis();
        //可使用sortedset排序查询
        Set<String> categorys = jedis.zrange("category", 0, -1);
        List<Category> cs=null;
        //判断查询的集合是否为空
        if (categorys == null || categorys.size()==0){
            System.out.println("从数据库查询数据....");
            //如果为空 需要从数据库查询 在将数据存入redis
            //从数据库查询
            cs=categoryDao.findAll();
            //将集合数据存储到redis中的category的key
            for (int i = 0; i < cs.size(); i++) {
                jedis.zadd("category",cs.get(i).getCid(),cs.get(i).getCname());
            }
        }else{
            System.out.println("从redis查询数据....");
            //如果不为空 将set的数据存入list
            cs = new ArrayList<Category>();
            for (String name : categorys) {
                Category category = new Category();
                category.setCname(name);
                cs.add(category);
            }


        }


        return categoryDao.findAll();
    }
}

运行结果

 

 redis缓存

标签:category,缓存,redis,旅游网,cs,import,com,黑马,bai
From: https://www.cnblogs.com/aimz01/p/16625826.html

相关文章

  • spring boot中的缓存管理
    springboot默认的缓存管理常用的缓存注解@EnableCaching:在类上使用,表示使用基于注解的方式进行缓存管理@Cacheable:用在类或者方法上。该注解用在方法上时,在方法执行......
  • 综合案例-黑马旅游网_分类数据展示功能
    综合案例-黑马旅游网_分类数据展示功能分析效果   后端代码实现CategoryDao接口packagecom.bai.dao;importcom.bai.domain.Category;importjava.util.......
  • 《黑马旅游网》综合案例(九)旅游线路查询
    参数传递header.html:(注意导入js/getParameter.js文件)<!--头部start--><scriptsrc="js/getParameter.js"></script><script>//给搜索按钮绑定单击事件,获取搜索输入......
  • redis删除缓存时遇到的问题
    一、redis查询key的方式redis常用两种方式用于key的精确/模糊匹配 1.KEYSpattern keyspattern用于匹配pattern所有key,会返回当前库里所有匹配上......
  • 《黑马旅游网》综合案例(七)旅游线路分页展示后台代码
    旅游线路分页展示类别id传递header.html:中拿到cid//遍历数组for(vari=0;i<data.length;i++){varli='<li><ahr......
  • 综合案例-黑马旅游网_退出功能
    综合案例-黑马旅游网_退出功能实现步骤:访问sevlet将session销毁跳转到登录页面代码实现前端代码<!--头部start--><script>$(function(){$.ge......
  • 综合案例-黑马旅游网_登录功能
    综合案例-黑马旅游网_登录功能分析   实现_Loginservletpackagecom.bai.web.servlet;importcom.bai.domain.ResultInfo;importcom.bai.domain.User;impor......
  • tidb 小表缓存
    TiDB在v6.0.0版本中引入了缓存表功能。该功能适用于频繁被访问且很少被修改的热点小表,即把整张表的数据加载到TiDB服务器的内存中,直接从内存中获取表数据,避免从TiKV......
  • 综合案例-黑马旅游网_邮件功能
    综合案例-黑马旅游网_邮件功能为了保证用户填写的邮箱事正确的将来可以推广一些宣传信息到用户邮箱中所有我们才需要邮件功能发送邮件代码packagecom.bai.util;i......
  • 缓存三大问题及解决方案
    1.缓存来由随着互联网系统发展的逐步完善,提高系统的qps,目前的绝大部分系统都增加了缓存机制从而避免请求过多的直接与数据库操作从而造成系统瓶颈,极大的提升了用户体验和......