可以使用以下代码来实现从数据库查询数据并存储到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的依赖库。