@cacheable是往redis缓存?
时间: 2023-08-11 09:05:19 浏览: 117
是的,@Cacheable 是一个 Spring 框架中的注解,用于实现方法级别的缓存。当使用 @Cacheable 注解标记一个方法时,该方法的返回值会被缓存到 Redis 或其他配置的缓存存储中,下次调用该方法时,如果参数相同且缓存中有对应的结果,则直接从缓存中读取,而不是再次执行方法体。这样可以提高方法的执行效率。
相关问题
使用了@Cacheable注解往redis中添加缓存,但是现在value值是乱码的
如果您在使用 `@Cacheable` 注解将数据存储到 Redis 中时出现了乱码问题,这可能是因为 Redis 默认使用的序列化方式是二进制的,而不是文本的。因此,您可以尝试使用其他的序列化方式,例如 `Jackson2JsonRedisSerializer`,将数据以 JSON 格式存储到 Redis 中。
以下是一个示例:
```java
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 设置 key 和 value 的序列化方式
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
// 设置 hash key 和 hash value 的序列化方式
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
return redisTemplate;
}
}
```
在上面的示例中,我们使用了 Jackson 序列化库将对象序列化为 JSON 格式,并将其存储到 Redis 中。您可以根据自己的需求进行调整。
@cacheable 是否走redis
@cacheable 可以使用 Redis 进行缓存,但不一定会走 Redis。具体是否走 Redis 取决于你的项目配置和实际情况。如果你的项目中配置了 Redis 作为缓存,那么 @cacheable 可以使用 Redis 进行缓存。如果没有配置 Redis,那么 @cacheable 将使用默认的缓存方式。
阅读全文