SpringBoot + Redis实现用户信息登录的缓存
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.concurrent.TimeUnit;
@Service
public class UserService {
@Autowired
private RedisTemplate<String, User> redisTemplate;
public User getUserByUsername(String username) {
// 从缓存中获取用户信息
User user = redisTemplate.opsForValue().get(username);
if (user == null) {
// 缓存中不存在,从数据库加载用户信息
user = loadUserFromDatabase(username);
if (user != null) {
// 将用户信息存入缓存
redisTemplate.opsForValue().set(username, user, 1, TimeUnit.DAYS);
}
}
return user;
}
private User loadUserFromDatabase(String username) {
// 模拟从数据库加载用户信息
// 实际开发中,这里应该是查询数据库的逻辑
return new User(username, "password", "email@example.com");
}
}
class User {
private String username;
private String password;
private String email;
// 构造器、getter和setter省略
}
这个代码示例展示了如何在Spring Boot应用中使用Redis来缓存用户信息。UserService
类中的getUserByUsername
方法首先尝试从Redis缓存中获取用户信息。如果缓存中不存在,则从数据库加载用户信息,并将其存入缓存,同时设置过期时间为1天。这样,经常访问的用户信息可以被频繁地缓存起来,减少了数据库的访问压力,提高了系统的响应速度。
评论已关闭