使用java实现从数据库查出来存redis 查的时候先查redis redis没有再读数据库的代码

可以使用以下代码来实现从数据库查询数据并存储到Redis中,并在查询时先从Redis中查找,若Redis中不存在,则再从数据库中读取。

import redis.clients.jedis.Jedis;

import java.sql.*;
import java.util.HashMap;
import java.util.Map;

public class RedisDatabaseExample {
    private static final String REDIS_HOST = "localhost";
    private static final int REDIS_PORT = 6379;

    private static final String DB_URL = "jdbc:mysql://localhost:3306/test";
    private static final String DB_USERNAME = "username";
    private static final String DB_PASSWORD = "password";

    private static final int EXPIRE_TIME_SECONDS = 60; // Redis key过期时间(秒)

    public static void main(String[] args) {
        // 创建Jedis实例
        Jedis jedis = new Jedis(REDIS_HOST, REDIS_PORT);

        // 查询数据
        String key = "data_key";
        String data = jedis.get(key);

        // 若Redis中不存在数据,则从数据库中读取
        if (data == null) {
            data = fetchDataFromDatabase();

            // 存储数据到Redis
            jedis.setex(key, EXPIRE_TIME_SECONDS, data);
        }

        // 输出数据
        System.out.println("Data: " + data);

        // 关闭Jedis连接
        jedis.close();
    }

    private static String fetchDataFromDatabase() {
        String data = null;
        try {
            // 连接数据库
            Connection connection = DriverManager.getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);

            // 执行查询
            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery("SELECT data FROM table_name WHERE id = 1");

            // 解析结果
            if (resultSet.next()) {
                data = resultSet.getString("data");
            }

            // 关闭连接
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return data;
    }
}

需要注意的是,这里的例子假设数据存储在MySQL数据库中,表名为table_name,数据字段名为data,查询条件为id = 1。你可以根据实际情况修改这些参数。

另外,需要确保已经添加Redis和MySQL的依赖库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值