Java 中使用 Redis 缓存数据
·
Java 中使用 Redis 缓存数据
Redis 是一种高性能的键值存储数据库,常用于缓存数据以提高应用性能。以下是如何在 Java 中使用 Redis 缓存数据并查询校验的详细方法。
添加 Redis 依赖
在 Maven 项目中,添加 Jedis 或 Lettuce 客户端依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.1</version>
</dependency>
或使用 Spring Data Redis:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
连接 Redis 服务器
使用 Jedis 连接 Redis 服务器:
Jedis jedis = new Jedis("localhost", 6379);
// 设置密码(如果需要)
jedis.auth("password");
使用 Spring Data Redis 连接:
@Configuration
public class RedisConfig {
@Bean
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration("localhost", 6379);
config.setPassword("password");
return new LettuceConnectionFactory(config);
}
}
缓存数据到 Redis
使用 Jedis 缓存数据:
// 设置键值对
jedis.set("user:1", "{\"name\":\"Alice\",\"age\":30}");
// 设置过期时间(秒)
jedis.expire("user:1", 3600);
使用 Spring Data Redis 缓存数据:
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void cacheUser(User user) {
redisTemplate.opsForValue().set("user:" + user.getId(), user);
redisTemplate.expire("user:" + user.getId(), 3600, TimeUnit.SECONDS);
}
查询并校验缓存数据
使用 Jedis 查询数据:
String userJson = jedis.get("user:1");
if (userJson != null) {
User user = new Gson().fromJson(userJson, User.class);
System.out.println("Cached user: " + user.getName());
} else {
System.out.println("Cache miss, fetching from DB...");
}
使用 Spring Data Redis 查询数据:
public User getUserFromCache(String userId) {
User user = (User) redisTemplate.opsForValue().get("user:" + userId);
if (user != null) {
System.out.println("Cached user: " + user.getName());
return user;
} else {
System.out.println("Cache miss, fetching from DB...");
return null;
}
}
校验缓存数据的有效性
可以通过 TTL(生存时间)或手动校验缓存数据是否过期:
Long ttl = jedis.ttl("user:1");
if (ttl > 0) {
System.out.println("Cache is valid, TTL: " + ttl + " seconds");
} else {
System.out.println("Cache expired or does not exist");
}
或结合数据库校验:
public User getUserWithCache(String userId) {
User user = getUserFromCache(userId);
if (user == null) {
user = fetchUserFromDatabase(userId);
if (user != null) {
cacheUser(user);
}
}
return user;
}
删除缓存数据
手动删除缓存数据:
jedis.del("user:1");
或使用 Spring Data Redis:
redisTemplate.delete("user:" + userId);
以上方法涵盖了 Java 中 Redis 缓存的基本使用场景,包括连接、存储、查询和校验。根据实际需求,可以进一步优化缓存策略或集成更高级的功能。
更多推荐



所有评论(0)