知識點:
springboot中整合redis
springboot中redisTemplate的使用
redis存數據時,key出現亂碼問題
一:springboot中整合redis
(1)pom.xml文件中引入依賴
<!--加入redis依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
(2)application.yml文件中加入redis相關配置

host:redis 服務器地址
port:6379 端口
database:數據庫索引(默認為0)
password:服務器連接密碼(默認為空)
timeout:連接超時時間(毫秒)
二:springboot中redisTemplate的使用
(1)redis操作的工具類RedisUtil
(2)使用redisTemplate存取數據
service層(hash值):
//存取redis值
public Map<String, Object> testRedisTemplate(Integer id){ //id=1852
Map<String, Object> user=new HashMap<>();
Map<String, Object> userResult=redisUtil.getHash("USER_BY_ID"+id);
//如果redis中,沒有存放值,存入redis
if(userResult.size()==0){
user = userMapper.findUserById(id);
redisUtil.setHash("USER_BY_ID"+id, user,120L); //120L是有效時間120秒,120秒以后redis中的數據自動刪除
}else{
//如果redis中,有值,直接取redis中的值
user=userResult;
}
return user;
}
redis中存放的數據:
三:redis存數據時,key的亂碼問題
上面redis中存放的名字和值都亂碼了,該如何解決呢?
我們可以在RedisUtil工具類中加
//解決亂碼問題
@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {
RedisSerializer stringSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(stringSerializer);
this.redisTemplate = redisTemplate;
}
改過之后,redis存放的結果

源碼:https://github.com/shuaishuaihand/cacheandredis.git