赞
踩
一、导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
二、yml写入redis配置信息
三、编写redis配置类解决序列化问题和缓存时间问题
package com.setch.crodigy.datacenter.common.config.redis; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.RedisSerializationContext; import java.time.Duration; /** * 解决redis序列化问题 */ @Configuration public class RedisTemplateConfig { /** * 解决序列化问题 * @param redisConnectionFactory * @return */ @Bean public RedisTemplate<Object,Object> emRedisTemplate(RedisConnectionFactory redisConnectionFactory){ RedisTemplate<Object,Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<Object>(Object.class); template.setDefaultSerializer(serializer); return template; } @Bean public RedisCacheManager employeeRedisCacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig() .entryTtl(Duration.ofDays(1)) // 设置缓存过期时间为一天 .disableCachingNullValues() // 禁用缓存空值,不缓存null校验 .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())); // 设置CacheManager的值序列化方式为json序列化,可加入@Class属性 return RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(cacheConfiguration).build(); // 设置默认的cache组件 } }
四、注入RedisTemplate
//注意这里的emRedisTemplate是上面配置类中为了解决序列化问题,否则存入的是一堆字母和字符
@Autowired
private RedisTemplate emRedisTemplate;
五、使用——向redis中保存数据
这里需要注意的一点是,前面我们配置了解决序列化的config类,这里需使用emRedisTemplate进行redis操作,若使用redisTemplate则会出现一堆字母和字符。
/**
* 主机下所有设备列表存储到redis
* @param jsonPayload
*/
private void saveDevicesToRedis(JSON jsonPayload) {
JSON jsonInfo = JSONUtil.parse(jsonPayload.getByPath("info"));
JSON objectList = JSONUtil.parse(jsonInfo.getByPath("object_list"));
JSONArray deviceArray = JSONUtil.parseArray(objectList);
emRedisTemplate.opsForValue().set("deviceList",deviceArray);
}
这里直接使用emRedisTemplate.opsForValue().set(“deviceList”,deviceArray);即可存储到redis中并自动创建表deviceList
六、通过Redis可视化可查看到我们存入的数据
七、获取上面我们存储到里面的数据
这里需要注意的是 这里仍使用emRedisTemplate进行操作
public void queryDeviceFromRedis(){
if(emRedisTemplate.hasKey("deviceList")){
emRedisTemplate.opsForValue().get("deviceList");
}
}
至此 springBoot使用redis做存储和获取的操作完成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。