1.导入依赖
2.redisconfig编写
2.1 cacheManager
@SuppressWarnings("rawtypes")
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
String env = settings.getEnvironment();
if ("dev".equals(env) || "test".equals(env) || "pre".equals(env)) {
cacheManager.setDefaultExpiration(10);
} else {
cacheManager.setDefaultExpiration(1800);
cacheManager.setExpires(ImmutableMap.of("wechatMiniProgram", 2 * 60 * 60L));
cacheManager.setExpires(ImmutableMap.of("xxxAdapterCache", 1800L));
cacheManager.setExpires(ImmutableMap.of("xxxServiceImplCache", 2 * 60 * 60L));
cacheManager.setExpires(ImmutableMap.of("xxxxAdapterCache", 1800L));
cacheManager.setExpires(ImmutableMap.of("xxxxSearchService", 1800L)); //是否合理???
}
cacheManager.setUsePrefix(true);
cacheManager.setCachePrefix(new CachePrefix(PREFIX, "_"));
return cacheManager;
}
2.2 自定义RedisTemplate objectRedisTemplate(RedisConnectionFactory factory)
@SuppressWarnings({ "rawtypes", "unchecked" })
@Bean
public RedisTemplate objectRedisTemplate(RedisConnectionFactory factory) {
RedisTemplate template = new RedisTemplate();
template.setConnectionFactory(factory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new FastJsonRedisSerializer(Object.class));
//template.setValueSerializer(new Jackson2JsonRedisSerializer(Object.class));
return template;
}
3.使用
@Autowired
private RedisTemplate objectRedisTemplate;
@Override
//@Cacheable(key = "'sections_'+ #filter.getCompanyId()+'_'+#filter.getCityId()+'_'+#filter.getSectionIds()", condition = "#filter.getCompanyId() != null && #filter.getCityId() != null && #filter.getSectionIds() != null",value="EstateSearchService#180#60",unless = "#result == null") //#${select.cache.timeout:1000}
public SearchResponse searchByFilter(FilterRequest filter, Integer type) {
String key="sections_"+ filter.getCompanyId()+"_"+filter.getCityId()+"_"+filter.getSectionIds();
boolean hasKey = objectRedisTemplate.hasKey(key);
if(hasKey){
SearchResponse res=new SearchResponse();
//反序列化成对象
JSONObject obj=(JSONObject)objectRedisTemplate.opsForValue().get(key); //com.alibaba.fastjson.JSONObject
JSONArray jsonArray = obj.getJSONArray("records");
Long total=obj.getLong("total");
Long recommendTotal=obj.getLong("recommendTotal");
List li= Lists.newArrayList();
for(int i=0;i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?