专栏首页MiningAlgorithmsMac做java开发(六):web项目中​redis缓存案例

Mac做java开发(六):web项目中​redis缓存案例

前篇文章介绍了redis的安装,这里介绍一个微型项目,以供初学者深入理解nosql与sql,即关系型数据库与非关系型数据库各自的存在价值。

文末附上github仓库地址。

首先列出整个项目的文件结构:项目用到了,tomcat,mysql,redis。

项目的第一步:创建项目

第二步,JDBC工具类,连接数据库,编写相应的函数;

第三步,写servlet函数:

public class ProvinceServieImpl implements ProvinceService {

    // 声明dao:
    private ProvinceDao dao = new ProvinceDaoImpl();


    @Override
    public List<Province> findALL() {
        return dao.findALL();
    }


    // 使用redis缓存:
    @Override
    public String findAllJson() {
        // 先从redis中查询数据:
        Jedis jedis = JedisPoolUtils.getJedis();
        String province_json = jedis.get("province");


        //2判断 province_json 数据是否为null
        if(province_json == null || province_json.length() == 0){
            //redis中没有数据
            System.out.println("redis中没数据,查询数据库...");
            //2.1从数据中查询
            List<Province> ps = dao.findALL();
            //2.2将list序列化为json
            ObjectMapper mapper = new ObjectMapper();
            try {
                province_json = mapper.writeValueAsString(ps);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }

            //2.3 将json数据存入redis
            jedis.set("province",province_json);
            //归还连接
            jedis.close();

        }else{
            System.out.println("redis中有数据,查询缓存...");
        }


        return province_json;

    }
}

最后,写html,实现前端功能:

public class ProvinceServieImpl implements ProvinceService {

    // 声明dao:
    private ProvinceDao dao = new ProvinceDaoImpl();


    @Override
    public List<Province> findALL() {
        return dao.findALL();
    }


    // 使用redis缓存:
    @Override
    public String findAllJson() {
        // 先从redis中查询数据:
        Jedis jedis = JedisPoolUtils.getJedis();
        String province_json = jedis.get("province");


        //2判断 province_json 数据是否为null
        if(province_json == null || province_json.length() == 0){
            //redis中没有数据
            System.out.println("redis中没数据,查询数据库...");
            //2.1从数据中查询
            List<Province> ps = dao.findALL();
            //2.2将list序列化为json
            ObjectMapper mapper = new ObjectMapper();
            try {
                province_json = mapper.writeValueAsString(ps);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }

            //2.3 将json数据存入redis
            jedis.set("province",province_json);
            //归还连接
            jedis.close();

        }else{
            System.out.println("redis中有数据,查询缓存...");
        }


        return province_json;

    }
}

喜欢的可以git star 一个呀。https://github.com/Jesselinux/Java_Web

完结。

本文分享自微信公众号 - MiningAlgorithms(gh_d0cc50d1ed34),作者:Jesse508

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 机器学习12:偏差-方差分解与bagging减少方差,boosting减少偏差

    1,误差:误差由偏差(bias)、方差(variance)和噪声(noise)组成;

    用户5473628
  • Data Structures and Algorithms Basics(011):Bit Manipulation

    1,Set Bit, Clear Bit, Toggle Bit, Test Bit

    用户5473628
  • 利用Python生成二维码信息

    用户5473628
  • 国产 JDK 来了! 华为开源 一款高性能 JDK!

    开发者技术前线报道 近日,华为 openEuler操作系统源码中发现了华为的 OpenJDK 发行版,名为“毕昇 JDK 8(bishengjdk-8)”...

    开发者技术前线
  • 息息相关的 JS 同步,异步和事件轮询

    JS 是一门单线程的编程语言,这就意味着一个时间里只能处理一件事,也就是说JS引擎一次只能在一个线程里处理一条语句。

    前端小智@大迁世界
  • 数据库PostrageSQL-服务器配置连接和认证

    指定服务器在哪些 TCP/IP 地址上监听客户端连接。值的形式是一个逗号分隔的主机名和/或数字 IP 地址列表。特殊项*对应所有可用 IP 接口。项0.0.0....

    cwl_java
  • 配置Server Side TAF

    实验环境:Oracle 11.2.0.4 RAC 参考MOS文档: How To Configure Server Side Transparent App...

    Alfred Zhao
  • 厉害啦!“小程序“闪亮来袭,试了吗?你的App还好吗?

    昨天一大早就被铺天盖地的“小程序”的信息给包围,为了给大数据后台的粉丝们在第一时间推送关于它的方方面面,小编鸡冻而颤抖的手输入了好几个错误。今天,小编决心改正错...

    华章科技
  • 二进制那些事

    理清字符集和字符编码关系中介绍到计算机内部由集成电路决定了计算机的信息只能用二进制数处理。本期将介绍二进制那些事。 移位运算 移位运算指的是将二进制数值的各数位...

    木可大大
  • JavaScript 原始数据类型转换

    Js基础数据类型有7种: 原始数据类型(6种) number (数值) string (字符串) boolean (布尔) null (空对象, typeo...

    zhaoolee

扫码关注云+社区

领取腾讯云代金券