【Redis】SSM整合Redis&注解式缓存的使用
@Configuration
public class RedisConfig {
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.timeout}")
private int timeout;
@Value("${spring.redis.password}")
private String password;
@Value("${spring.redis.database}")
private int database;
@Bean
public JedisPool redisPoolFactory() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password, database);
return jedisPool;
}
}
@Service
public class RedisService {
@Autowired
private JedisPool jedisPool;
public String get(String key) {
Jedis jedis = null;
String value = null;
try {
jedis = jedisPool.getResource();
value = jedis.get(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
return value;
}
public String set(String key, String value) {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.set(key, value);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
return value;
}
}
@Service
public class UserService {
@Autowired
private RedisService redisService;
@Cacheable(value = "user", key = "#id")
public User findById(String id) {
// 模拟从数据库查询用户
User user = new User();
user.setId(id);
user.setName("张三");
return user;
}
public void updateUser(User user) {
// 模拟更新用户信息
// ...
// 更新后,清除缓存
redisService.set(user.getId(), null);
}
}
在这个代码实例中,我们定义了RedisConfig
类来配置Jedis连接池,并创建了redisPoolFactory
Bean。RedisService
类封装了对Redis的基本操作。在UserService
中,我们使用@Cacheable
注解来标记findById
方法,使其能够使用Redis作为缓存。同时,提供了updateUser
方法来模拟更新用户信息,并清除相应的缓存条目。这样,当用户信息被更新后,缓存中的数据会过期,下次查询将从数据库中重新获取数据。
评论已关闭