Redis use cached data

Redis use cached data

In the service layer, add the following code to be understood that, after the copy,
If I write a bit so that you do not understand, I whisper, we explore together, I am willing to accept all doubt.

import cn.hp.jedis.dao.ProvinceDao;
import cn.hp.jedis.dao.ProvinceDaoImpl;
import cn.hp.jedis.domain.Province;
import cn.hp.jedis.utils.JedisPoolUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import redis.clients.jedis.Jedis;

import java.util.List;

public class ProvinceServiceImpl implements ProvinceService {
	//调用dao层
    private ProvinceDao provinceDao = new ProvinceDaoImpl();

	/**
	*从数据库查询数据
	*/
    @Override
    public List<Province> findAll() {
        return provinceDao.findAll();
    }

	/**
	*添加到redis缓存
	*/
    @Override
    public String findJson() {
        //1.从redis取出数据(首先拿到jedis链接)
        Jedis jedis = JedisPoolUtils.getJedis();  //下面有JedisPoolUtils工具类代码。链接一
        //2.从jedis中得到 json数据
        String json = jedis.get("province"); 			//从redis中查询是否缓存过数据
        //3.判断json是否存在,若不存在 则先请求网络(将请求成功数据缓存到redis)
        if (json == null||json.length()==0){
            System.out.println("首次从mysql查询数据,redis没有缓存。。。");
            //3.1先从mysql数据库查询数据
            List<Province> list = provinceDao.findAll();  //从数据库查询数据并存入List集合中
            ObjectMapper objectMapper = new ObjectMapper();  //List转json数据    具体看链接二
            try {
                json = objectMapper.writeValueAsString(list);   		//List转json数据    具体看链接二
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
            jedis.set("province",json);										//向redis中添加缓存数据
            jedis.close();															//关闭池链接
        }else{
            System.out.println("可以取出json数据,使用缓存数据...");
        }
        return json;
    }
}

servlet layer calls


import cn.hp.jedis.service.ProvinceService;
import cn.hp.jedis.service.ProvinceServiceImpl;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ProvinceServlet extends HttpServlet {
	//调用上面的service层
    private ProvinceService provinceService = new ProvinceServiceImpl();
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String json = provinceService.findJson();		//调用service的findJson() 方法
        System.out.println(json);
        //将json数据响应到前台 (html,jsp)
        resp.setContentType("application/json;charset=utf-8");//指定当前响应数据的格式为json 并且指定编码为utf-8
        resp.getWriter().write(json);//直接将字符串响应到客户端
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

A link
link two

Published 68 original articles · won praise 7 · views 2514

Guess you like

Origin blog.csdn.net/Cui6023056/article/details/104847647