案例1:Redis当作缓存,mysql查询案例

package com.shujia.jinjie;

import redis.clients.jedis.Jedis;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

/*
    Redis当作缓存,mysql查询案例
 */
public class AnliDemo2 {


    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您要查询的商品名称:");
        String goodsName = sc.nextLine();

        //先去redis中查询,如果redis中有该数据,就直接返回
        //若redis中没有查询到该数据,就去mysql中查询,返回查询的结果,同时向redis中写一个该数据并设置过期时间
        String info = selectGoods(goodsName);
        System.out.println("查询结果为:");
        System.out.println(info);

    }

    public static String selectGoods(String name) {
        System.out.println(name);
        Jedis redisConn = RedisTool.REDIS_CONN;
        String res = redisConn.get(name);
        String info = null;
        try {
            if (res != null) {
                System.out.println("=====================走redis查询=====================");
                info = res;
            }else {
                System.out.println("=====================走mysql业务数据库查询=====================");
                //redis中没有该缓存,去业务数据库中查询
                Connection conn = MySqlTool.getConnection();
                PreparedStatement prep = conn.prepareStatement("select * from jd_goods where goods_name=?");
                prep.setString(1, name);
                ResultSet resultSet = prep.executeQuery();

                while (resultSet.next()){
                    String goods_name = resultSet.getString(1);
                    String price = resultSet.getString(2);
                    String comments = resultSet.getString(3);
                    String shop = resultSet.getString(4);
                    String icos = resultSet.getString(5);
                    info = goods_name+"|"+price+"|"+comments+"|"+shop+"|"+icos;

                    //同时向redis中添加一个缓存
                    redisConn.set(name, info);
                    redisConn.expire(name,86400);
                }
            }
        }catch (Exception e){
            e.printStackTrace();
        }

        return info;
    }
}
posted @   Xiaohu_BigData  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示