第一步: 在linux上安装redis
linux服务器的系统为centos7 ,具体安装参考https://www.cnblogs.com/rslai/p/8249812.html
第二步: 在pom.xml文件中加入依赖
<!-- 添加redis支持-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
第三步: yml配置文件中加入
redis:
host: 139.199.124.200
port: 6379
database: 1
password:
第四步: 演示
@Resource
private StringRedisTemplate stringRedisTemplate;
@GetMapping("/redis")
public String redis(){
stringRedisTemplate.opsForValue().set("admin","123456"); //已key-value形式存入redis
String admin = stringRedisTemplate.opsForValue().get("admin");
long milliseconds = new Date().getTime() + 10000;
stringRedisTemplate.expireAt("admin",new Date(milliseconds)); //设置过期时间为10s后
return admin;
}
结果: 返回 123456 ,并在10s后过期
如果引入的是 RedisTemplate 而不是StringRedisTemplate 的话,则需要序列化配置,否则
1.从连接工具里看出现乱码
2.redisTemplate.keys("*") 无效;
配置:
@Configuration
public class RedisConfig {
@Bean
@SuppressWarnings("all")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
template.setConnectionFactory(factory);
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
// key采用String的序列化方式
template.setKeySerializer(stringRedisSerializer);
// hash的key也采用String的序列化方式
template.setHashKeySerializer(stringRedisSerializer);
// value序列化方式采用jackson
template.setValueSerializer(jackson2JsonRedisSerializer);
// hash的value序列化方式采用jackson
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
此外,如果需要序列化的对象有localDateTime类型的对象,要在属性上加注解:
@JsonDeserialize(using = LocalDateTimeDeserializer.class) @JsonSerialize(using = LocalDateTimeSerializer.class)