您当前的位置: 首页 >  redis

zmc@

暂无认证

  • 3浏览

    0关注

    142博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

redis实践demo(序列化与反序列化)

zmc@ 发布时间:2018-12-29 15:52:17 ,浏览量:3

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            
关注
打赏
1643271353
查看更多评论
0.0596s