首先在pom文件中设置依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
在yml中设置Redis连接配置:
spring:
redis:
host: localhost
port: 6379
在docker-conpose.yml中设置Redis服务:
version: '3.1'
services:
redis:
image: daocloud.io/library/redis:5.0.7 //镜像
restart: always
container_name: redis
ports:
- "6379:6379"
Redis的配置类,用于修改redis序列化对象时 key-value的序列化方式,创建一个RedisTemplate实例,并将其配置为使用字符串键和JSON值的序列化方式。这样可以方便地将Java对象以JSON格式存储到 Redis缓存中,一般用来存对象使用:
/**
* Redis的配置类
* 修改redis序列化对象时 key-value的序列化方式
*/
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
// 关联redis工厂
redisTemplate.setConnectionFactory(factory);
// 设置key的序列化方式
redisTemplate.setKeySerializer(RedisSerializer.string());
// 设置value的序列化方式
redisTemplate.setValueSerializer(RedisSerializer.json());
return redisTemplate;
}
}
redis的配置类,用于简化redis存取的过程
@Component
@RequiredArgsConstructor
public class RedisUtil {
final StringRedisTemplate stringRedisTemplate;
final RedisTemplate<String,Object> redisTemplate;
public static final String REDIS_PREFIX = "super-parking:";
public void setString(String key, String value) {
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
ops.set(getKey(key), value);
}
public void setString(String key, String value, long time) {
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
ops.set(getKey(key), value, time, TimeUnit.SECONDS);
}
public String getString(String key) {
ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
return ops.get(getKey(key));
}
public void set(String key, Object value) {
ValueOperations<String, Object> ops = redisTemplate.opsForValue();
ops.set(getKey(key), value);
}
public void set(String key, Object value, long time) {
ValueOperations<String, Object> ops = redisTemplate.opsForValue();
ops.set(getKey(key), value, time, TimeUnit.SECONDS);
}
public Object get(String key) {
ValueOperations<String, Object> ops = redisTemplate.opsForValue();
return ops.get(getKey(key));
}
// 给所有key添加一个固定的前缀
private String getKey(String key) {
return REDIS_PREFIX + key;
}
}