@cacheable 是否走redis
时间: 2023-04-13 20:00:53 浏览: 687
@cacheable 可以使用 Redis 进行缓存,但不一定会走 Redis。具体是否走 Redis 取决于你的项目配置和实际情况。如果你的项目中配置了 Redis 作为缓存,那么 @cacheable 可以使用 Redis 进行缓存。如果没有配置 Redis,那么 @cacheable 将使用默认的缓存方式。
相关问题
使用了@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是Spring框架中的一个注解,用于实现方法级别的缓存。它可以将方法的返回值缓存起来,下次调用相同的方法时,可以直接从缓存中获取结果,而不需要再执行一次方法体内的逻辑。
而Redis是一种高性能的键值对存储数据库,它支持多种数据结构,如字符串、哈希、列表、集合等。Redis具有快速读写能力和丰富的功能,常被用作缓存数据库。
当@Cacheable与Redis结合使用时,可以实现更高效的缓存机制。通过将方法的返回值存储到Redis中,可以避免频繁地执行方法体内的逻辑,从而提高系统的性能和响应速度。
使用@Cacheable + Redis的步骤如下:
1. 在Spring配置文件中配置Redis相关的连接信息。
2. 在需要进行缓存的方法上添加@Cacheable注解,并指定缓存的名称和缓存的key。
3. 当调用该方法时,会先检查Redis中是否存在对应的缓存数据,如果存在,则直接返回缓存数据;如果不存在,则执行方法体内的逻辑,并将结果存储到Redis中。
需要注意的是,使用@Cacheable + Redis时,需要确保被缓存的方法具有幂等性,即多次调用该方法返回的结果应该是一致的。
阅读全文