SimpleRedisComponent.java 1.48 KB
package com.yoho.search.cache.beans;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.yoho.core.redis.cluster.operations.serializer.RedisKeyBuilder;
import com.yoho.search.cache.CacheInMinute;
import com.yoho.search.cache.impls.SearchRedis;
import com.yoho.search.cache.model.CacheObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.lang.reflect.Type;

@Component
public class SimpleRedisComponent {

    @Autowired
    private SearchRedis searchRedis;

    public void addValueToRedis(RedisKeyBuilder redisKeyBuilder, Object result,CacheInMinute cacheInMinute) {
        String jsonString = JSON.toJSONString(result, SerializerFeature.WriteMapNullValue,SerializerFeature.DisableCircularReferenceDetect);
        CacheObject toCacheResult = new CacheObject(jsonString);
        searchRedis.addOrUpdate(redisKeyBuilder, toCacheResult, cacheInMinute.getMinute());
    }

    public <T> T getValueFromRedis(RedisKeyBuilder redisKeyBuilder, Type type) {
        CacheObject cacheObject = searchRedis.get(redisKeyBuilder);
        if (cacheObject == null || cacheObject.getValue() == null) {
            return null;
        }
        if (!(cacheObject.getValue() instanceof String)) {
            return null;
        }
        String redisValue = (String) cacheObject.toObject();
        return JSON.parseObject(redisValue, type);
    }

}