Redis的简单使用
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
编写配置文件
# 指定要使用的Redis数据库索引 Redis默认有16个数据库(编号从0到15) 这里选择的是第9个数据库。
spring.redis.database=9
# 主机地址
spring.redis.host=127.0.0.1
# 端口号
spring.redis.port=6379
# 密码
spring.redis.password=密码
# 连接超时时间
spring.redis.timeout=1000
编写配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisTemplateConfig {
@Bean
public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(lettuceConnectionFactory);
//设置key序列化方式String
redisTemplate.setKeySerializer(new StringRedisSerializer());
//设置value的序列化方式json,使用GenericJackson2JsonRedisSerializer替换默认的序列化
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
这个配置类主要定义了与Redis交互实例redisTemplate的键值序列方式,这里key的序列化方式是String,value采用的是JSON格式
代码
/**
* 将结果存入Redis
* @param message
* @return
*/
@Override
public String saveRedis(String message) {
String key = message+"key";
//先判断Redis中是否包含当前key
Boolean b = redisTemplate.hasKey(key);
if (b){ //直接在Redis里面取
String value = (String) redisTemplate.opsForValue().get(key);
log.info("在Redis里取的数据---> "+ value);
return value;
}else {
//存入Redis 设置一小时过期时间
redisTemplate.opsForValue().set(key,message,Duration.ofHours(1));
log.info("直接返回的数据---> "+ message);
return message;
}
}
运行结果
同一个数据多次请求的结果