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
关注
打赏
热门博文
- ES recovery、主副分片复制会有一段时间block写入?
- 【离线】esrally实践总结
- ES写入毛刺问题?从原理到调优
- Mac上打包到Linux执行(go)、import调用本地代码(go)
- 笔记-Mac清理dns缓存
- Elasticsearch CCR源码分析(补充)
- Elasticsearch的long类型精准匹配异常?
- Elasticsearch索引生命周期管理-实测demo
- k8s-client(java)从6.0.1升级到11.0.0出现patch问题may not be specified for non-apply patch/cannot unmarshal...
- Elasticsearch出现Connection reset by peer分析