package czd.lib.cache; import java.lang.ref.SoftReference; import java.util.concurrent.ConcurrentHashMap; /** * Created with IntelliJ IDEA. * User: chenzhidong * Date: 13-12-30 * Time: 上午11:57 */ public class MemCache implements CacheI<Object> { protected static MemCache instance; protected ConcurrentHashMap<String,SoftReference<Object>> mem; public MemCache() { mem = new ConcurrentHashMap<String,SoftReference<Object>>(); } public static MemCache getInstance() { if (instance == null) instance = new MemCache(); return instance; } @Override public boolean save(String key, Object value) { mem.put(genKey(key), new SoftReference<Object>(value)); return true; } @Override public boolean exists(String key) { return mem.containsKey(genKey(key)); } @Override public Object get(String key) { SoftReference<Object> softref = mem.get(genKey(key)); if (softref != null) return softref.get(); return null; } @Override public boolean delete(String key) { if (key.endsWith("*")) { for (String keys : mem.keySet()) if (keys.startsWith(key)) mem.remove(keys); } else mem.remove(genKey(key)); return true; } @Override public long size() { return mem.size(); } @Override public String getRealName(String key) { return genKey(key); } @Override public void clean() { mem.clear(); } @Override public String genKey(String key) { return key; } @Override public long gettime(String key) { return 0L; } }