package com.jcdm.common.core.redis; import org.springframework.cache.Cache; import org.springframework.cache.support.SimpleValueWrapper; import org.springframework.stereotype.Component; import java.util.Collection; import java.util.Map; import java.util.Objects; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentHashMap; @Component public class MyCache implements Cache { // 使用ConcurrentHashMap作为数æ®çš„å˜å‚¨ private Map<String, Object> storage = new ConcurrentHashMap<>(); // getName获å–cacheçš„å称,å˜å–æ•°æ®çš„时候用æ¥åŒºåˆ†æ˜¯é’ˆå¯¹å“ªä¸ªcacheæ“作 @Override public String getName() { return null; } @Override public Object getNativeCache() { return null; } public boolean hasKey(String key){ return storage.containsKey(key); } @Override public ValueWrapper get(Object key) { String k = key.toString(); Object value = storage.get(k); // 注æ„返回的数æ®ï¼Œè¦å’Œå˜æ”¾æ—¶æŽ¥æ”¶åˆ°æ•°æ®ä¿æŒä¸€è‡´ï¼Œè¦å°†æ•°æ®ååºåˆ—化回æ¥ã€‚ return Objects.isNull(value) ? null : new SimpleValueWrapper(value); } @Override public <T> T get(Object key, Class<T> type) { return null; } @Override public <T> T get(Object key, Callable<T> valueLoader) { return null; } // put方法,就是执行将数æ®è¿›è¡Œç¼“å˜ @Override public void put(Object key, Object value) { if (Objects.isNull(value)) { return; } //å˜å€¼ storage.put(key.toString(), value); } // evict方法,是用æ¥æ¸…除æŸä¸ªç¼“å˜é¡¹ @Override public void evict(Object key) { storage.remove(key.toString()); } // åˆ é™¤é›†åˆ public boolean deleteObject(final Collection collection){ collection.forEach(o -> { storage.remove(o.toString()); } ); return true; } // 获å–所有的keys public Collection<String> keys(final String pattern){ return storage.keySet(); } @Override public void clear() { } }