package com.ltkj.tduck.utils; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.ltkj.common.core.redis.RedisCache; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.Lists; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.Cache; import org.springframework.cache.annotation.EnableCaching; import org.springframework.stereotype.Component; import java.util.List; /** * @author : tduck * @description : 基于ehcache实现 * @create : 2022/01/06 10:40 **/ @Component @Slf4j @EnableCaching public class CacheUtils { private final String ETERNAL_CACHE_NAME = "eternal_cache"; private final String TEMP_CACHE_NAME = "temp_cache"; // @Autowired // private EhCacheCacheManager cacheManager; @Autowired private RedisCache cache; /** * 保存到Cache */ public void save(String key, String value) { // cacheManager.getCache(ETERNAL_CACHE_NAME).put(key, value); cache.setCacheObject(key,value); } /** * 获取 * * @param key */ public String get(String key) { // Cache.ValueWrapper valueWrapper = cacheManager.getCache(ETERNAL_CACHE_NAME).get(key); // Cache.ValueWrapper valueWrapper = cache.getCacheObject(key); // if (ObjectUtil.isNotNull(valueWrapper) && ObjectUtil.isNotNull(valueWrapper.get())) { // return valueWrapper.get().toString(); // } Object valueWrapper = cache.getCacheObject(key); if (ObjectUtil.isNotNull(valueWrapper) && ObjectUtil.isNotNull(valueWrapper)) { return valueWrapper.toString(); } return null; } /** * 自增 * * @param key * @param number * @return */ public Long incr(String key, Integer number) { String v = get(key); if (StrUtil.isBlank(v)) { v = "0"; } long finalValue = Convert.toLong(v) + number; save(key, String.valueOf(finalValue)); return finalValue; } /** * 添加到集合缓存 * * @param key * @param value */ public void addList(String key, Object value) { List coll = this.getList(key, Object.class); coll.add(value); // cacheManager.getCache(TEMP_CACHE_NAME).put(key, JsonUtils.objToJson(coll)); cache.setCacheObject(key, JsonUtils.objToJson(coll)); } /** * 从集合中移除 * * @param key * @param value */ public void removeList(String key, Object value) { List coll = this.getList(key, Object.class); coll.remove(value); // cacheManager.getCache(TEMP_CACHE_NAME).put(key, JsonUtils.objToJson(coll)); } /** * 获取集合 * * @param key */ public List getList(String key, Class classz) { String v = get(key); if (ObjectUtil.isNotNull(v)) { return JsonUtils.jsonToList(v, classz.getClass()); } return Lists.newArrayList(); } /** * 临时保存 默认5min */ public void tempSave(String key, String value) { // cacheManager.getCache(TEMP_CACHE_NAME).put(key, value); } /** * 获取临时存储变量 * * @param key */ // public String getTemp(String key) { // Cache.ValueWrapper valueWrapper = cacheManager.getCache(TEMP_CACHE_NAME).get(key); // if (ObjectUtil.isNotNull(valueWrapper) && ObjectUtil.isNotNull(valueWrapper.get())) { // return valueWrapper.get().toString(); // } // return null; // } // // public void removeTemp(String key) { // cacheManager.getCache(TEMP_CACHE_NAME).evict(key); // } }