Caché de mapas en java

El proyecto implica el almacenamiento en caché de mapas, registro:

public class MapCacheUtil {

    private static MapCacheUtil mapCache;
    private Map<Object, Object> cacheItems;

    private MapCacheUtil() {
        cacheItems = new ConcurrentHashMap<Object, Object>();
    }

    /**
     * 获取唯一实例
     * 
     * @return instance
     */
    public static MapCacheUtil getInstance() {
        if (mapCache == null) {
            synchronized (MapCacheUtil.class) {
                if (mapCache == null) {
                    mapCache = new MapCacheUtil();
                }
            }
        }
        return mapCache;
    }

    /**
     * 获取所有cache信息
     * 
     * @return cacheItems
     */
    public Map<Object, Object> getCacheItems() {
        return this.cacheItems;
    }

    /**
     * 清空cache
     */
    public void clearAllItems() {
        cacheItems.clear();
    }

    /**
     * 获取指定cache信息
     * 
     * @param key 唯一标识
     * @return Object cacheItem
     */
    public Object getCacheItem(Object key) {
        if (cacheItems.containsKey(key)) {
            return cacheItems.get(key);
        }
        return null;
    }

    /**
     * 存值
     * 
     * @param key 唯一标识
     * @param value 存放的值
     */
    public Boolean putCacheItem(Object key, Object value) {
        if (!cacheItems.containsKey(key)) {
            cacheItems.put(key, value);
            return true;
        }
        return false;
    }

    /**
     * 根据key删除
     * 
     * @param key 唯一标识
     */
    public void removeCacheItem(Object key) {
        if (cacheItems.containsKey(key)) {
            cacheItems.remove(key);
        }
    }

    /**
     * 获取cache长度
     * 
     * @return size
     */
    public int getSize() {
        return cacheItems.size();
    }
}

La llamada es muy simple: crea una instancia directamente, llama a putCacheItem para almacenar el valor en la caché

        MapCacheUtil mapCacheUtil = MapCacheUtil.getInstance();
        Boolean cacheResult = mapCacheUtil.putCacheItem(roomId, videoUrl);

La búsqueda también es muy simple, de la siguiente manera (obtenga el valor de acuerdo con la clave)

        MapCacheUtil mapCacheUtil = MapCacheUtil.getInstance();
        String videoUrl = mapCacheUtil.getCacheItem(roomId).toString();

Una vez que se detiene el proyecto de caché de mapas, se borrará la caché de mapas.

En un proyecto, se almacena un servlet y se obtiene un método principal. El resultado no se puede obtener del valor en la caché. Alguien me dijo que está relacionado con el método principal. Reemplacé el método principal con un servlet y se obtiene el resultado, pero aún no he descubierto por qué, ¿puede decirme si lo sabe?

Supongo que te gusta

Origin blog.csdn.net/shuoshuo_12345/article/details/87192184
Recomendado
Clasificación