您可以使用Java的Jedis库来操作Redis,并结合JDBC来操作数据库,实现从数据库查询数据并存入Redis的过程。以下是一个简单的示例代码:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DatabaseToRedis {
// Redis连接池
private static JedisPool jedisPool;
public static void main(String[] args) {
// 初始化Redis连接池
initRedis();
// 查询数据
String data = getDataFromRedisOrDatabase("yourKey");
System.out.println("Data: " + data);
// 关闭Redis连接
jedisPool.close();
}
// 从Redis或数据库获取数据
private static String getDataFromRedisOrDatabase(String key) {
Jedis jedis = jedisPool.getResource();
String data = jedis.get(key);
jedis.close();
if (data == null) {
// 从数据库中获取数据
data = getDataFromDatabase(key);
// 将数据存入Redis
if (data != null) {
jedis = jedisPool.getResource();
jedis.set(key, data);
jedis.close();
}
}
return data;
}
// 从数据库中查询数据
private static String getDataFromDatabase(String key) {
String url = "jdbc:mysql://localhost:3306/yourDatabase";
String username = "yourUsername";
String password = "yourPassword";
try (Connection connection = DriverManager.getConnection(url, username, password)) {
String query = "SELECT data FROM yourTable WHERE key = ?";
PreparedStatement statement = connection.prepareStatement(query);
statement.setString(1, key);
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
return resultSet.getString("data");
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 初始化Redis连接池
private static void initRedis() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(10); // 最大连接数
jedisPoolConfig.setMaxIdle(5); // 最大闲置连接数
String host = "localhost";
int port = 6379;
String password = "yourRedisPassword";
jedisPool = new JedisPool(jedisPoolConfig, host, port);
// 如果Redis有密码需要验证
Jedis jedis = jedisPool.getResource();
if (password != null && !password.isEmpty()) {
jedis.auth(password);
}
jedis.close();
}
}
请根据您的具体数据库和Redis配置修改对应的连接信息。这个示例中,在查询数据时会先访问Redis,如果Redis中没有对应的数据,则从数据库中读取数据并存入Redis,以便下次查询时直接从Redis获取数据。