Jedis案例

Jedis案例:

案例的需求:
    1.提供index.html页面,页面中有一个省份下拉列表
    2.当页面加载完成之后 发送ajax请求,加载所有省份

缓存思想:
    1.先从redis查询数据
        如果没有:
            1.从数据库中查询
            2.将数据存入redis
        如果有:
            1.直接从redis获取数据

注意:使用redis缓存一些不经常发生变化的数据
    数据库的数据一旦发生改变,需要清空redis缓存,重新存入数据
    在service对应的修改方法中,将redis的数据清除

依赖Jar包
在这里插入图片描述

Jedis配置:jedis.properties

host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10

mysql配置:druid.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///day23
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000

对应的文件
在这里插入图片描述

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        $(function() {
            // 发送ajax请求,加载所有省份数据
            // 为什么url不写虚拟路径也可以找到servlet
            $.get("provinceServlet", {}, function(data) {
                // 获取select
                var province = $("#province");
                // 2.遍历数组
                for (var i = 0; i < data.length; i++) {
                    // 创建option,调用select的append方法
                    var option  = "<option name='"+data[i].id+"'>"+data[i].name+"</option>";
                    // 调用select的append方法追加option
                    province.append(option);
                }
            });
        });
    </script>
</head>
<body>
<select id="province">
    <option value="">--请选择省份--</option>
</select>
</body>
</html>

provinceServiceImpl:

package cn.itcast.service.impl;

import cn.itcast.dao.ProvinceDao;
import cn.itcast.dao.impl.ProvinceDaoImpl;
import cn.itcast.domain.Province;
import cn.itcast.jedis.util.JedisPoolUtils;
import cn.itcast.service.ProvinceService;
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
     * @return
     */
    @Override
    public String findAllJson() {
        // 1.先从redis中查询数据
        // 获取redis客户端连接
        Jedis jedis = JedisPoolUtils.getJedis();
        String province_json = jedis.get("province");
        // province_json是否为null
        if (province_json == null ||
                province_json.length() == 0) {
            System.out.println("reids中无数据");
            // 从数据库查询
            List<Province> ps = provinceDao.findAll();
            // 将list序列化为json
            ObjectMapper mapper = new ObjectMapper();
            try {
                province_json = mapper.writeValueAsString(ps);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
            // 将json数据存入redis
            jedis.set("province", province_json);
            // 归还连接到连接池
            jedis.close();
        }
        return province_json;
    }
}

ProvinceServlet:

package cn.itcast.web.servlet;

import cn.itcast.domain.Province;
import cn.itcast.service.ProvinceService;
import cn.itcast.service.impl.ProvinceServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

//@WebServlet("/provinceServlet")
public class ProvinceServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.调用service查询
//        ProvinceService provinceService = new ProvinceServiceImpl();
//        List<Province> list = provinceService.findAll();
        // 2.序列化list为json
//        ObjectMapper mapper = new ObjectMapper();
//        String json = mapper.writeValueAsString(list);

        ProvinceService provinceService = new ProvinceServiceImpl();
        // 获取缓存的方法
        String json = provinceService.findAllJson();
        // 3.响应结果
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write(json);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值