几个重点
<parent>
<groupId></groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
- redis必须用这个依赖,其他依赖不适用
<dependency>
<groupId></groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
或者yml
=0
# Redis服务器地址
=111.32.23.44
# Redis服务器连接端口
=6379
#redis 服务器密码,我的服务器有密码的,但是这里通过6379端口链接不要写密码
=
# 连接池最大连接数(使用负值表示没有限制)
-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
-wait=-1
# 连接池中的最大空闲连接
-idle=8
# 连接池中的最小空闲连接
-idle=0
# 连接超时时间(毫秒)
=6000
坑:如果填写密码会报错,掉坑里半天
jedisDataException: ERR Client sent AUTH, but no password is set
- CacheConfig
@Slf4j
@Configuration
@EnableCaching//启用缓存,这个注解很重要;
//继承CachingConfigurerSupport,为了自定义生成KEY的策略。可以不继承。
public class RedisConfig extends CachingConfigurerSupport{
@Bean(name="redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
(redisConnectionFactory);
FastJsonRedisSerializer<Object> serializer = new FastJsonRedisSerializer<Object>();
// value值的序列化采用fastJsonRedisSerializer
(serializer);
(serializer);
// key的序列化采用StringRedisSerializer
(new StringRedisSerializer());
(new StringRedisSerializer());
(redisConnectionFactory);
return template;
}
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
// 生成一个默认配置,通过config对象即可对缓存进行自定义配置
RedisCacheConfiguration config = ();
// 设置缓存的默认过期时间,也是使用Duration设置
config = ((1))
.disableCachingNullValues(); // 不缓存空值
// 设置一个初始化的缓存空间set集合
Set<String> cacheNames = new HashSet<>();
("my-redis-cache1");
("my-redis-cache2");
// 对每个缓存空间应用不同的配置
Map<String, RedisCacheConfiguration> configMap = new HashMap<>();
("my-redis-cache1", config);
("my-redis-cache2", ((120)));
// 使用自定义的缓存配置初始化一个cacheManager
RedisCacheManager cacheManager = (factory)
.initialCacheNames(cacheNames) // 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置
.withInitialCacheConfigurations(configMap)
.build();
return cacheManager;
}
}
坑:注意这里RedisCacheManager已经去掉的构造方法中用redieTemplte;
- 应用测试
//在service层调用方法上加Cacheable
@Cacheable(cacheNames = "cart", key="'cart_'+#id")
@Override
public Cart getById(Long id){
return (id);
}
```
6. 验证

redis中已经有key=cart_7的数据的。