Class InMemoryCacheImpl

java.lang.Object
org.nuxeo.ecm.core.cache.AbstractCache
org.nuxeo.ecm.core.cache.InMemoryCacheImpl
All Implemented Interfaces:
Cache, CacheManagement

public class InMemoryCacheImpl extends AbstractCache
Default in memory implementation for cache management based on guava
Since:
6.0
  • Field Details

  • Constructor Details

  • Method Details

    • get

      public Serializable get(String key)
      Description copied from interface: Cache
      Get method to retrieve value from cache Must not raise exception if the key is null, but return null
      Parameters:
      key - the string key
      Returns:
      the Serializable value, return null if the key does not exist or if the key is null
    • keySet

      public Set<String> keySet()
      Description copied from interface: Cache
      Returns the set of all keys stored in the cache.
      Returns:
      the Set of all keys
    • invalidate

      public void invalidate(String key)
      Description copied from interface: Cache
      Invalidate the given key
      Parameters:
      key - , the key to remove from the cache, if null will do nothing
    • invalidateLocal

      public void invalidateLocal(String key)
      Description copied from interface: CacheManagement
      Invalidates the given key locally. Does not propagate invalidations.
      Parameters:
      key - the key to remove from the cache
    • invalidateAll

      public void invalidateAll()
      Description copied from interface: Cache
      Invalidate all key-value stored in the cache
    • invalidateLocalAll

      public void invalidateLocalAll()
      Description copied from interface: CacheManagement
      Invalidates all keys locally. Does not propagate invalidations.
    • put

      public void put(String key, Serializable value)
      Description copied from interface: Cache
      Put method to store a Serializable value
      Parameters:
      key - the string key, if null, the value will not be stored
      value - the value to store, if null, the value will not be stored
    • putLocal

      public void putLocal(String key, Serializable value)
      Description copied from interface: CacheManagement
      Stores a Serializable value into the cache locally. Does not propagate invalidations.
      Parameters:
      key - the key
      value - the value
    • computeIfAbsent

      public <V extends Serializable> V computeIfAbsent(String key, Supplier<V> supplier)
      Retrieves the value from the cache and returns it. If the associated value is null, retrieves it from the supplier and put it into the cache.

      This implementation delegates to Cache.get(Object, java.util.concurrent.Callable) which provides single-flight loading: if multiple threads request the same absent key concurrently, only one invokes the supplier and the others wait for that result, avoiding a thundering herd.

      Since:
      2025.20
    • hasEntry

      public boolean hasEntry(String key)
      Description copied from interface: Cache
      Check if a given key is present inside the cache. Compared to the get() method, this method must not update internal cache state and change TTL
      Parameters:
      key - the string key
      Returns:
      true if a corresponding entry exists, false otherwise
    • getSize

      public long getSize()
      Description copied from interface: CacheManagement
      Returns this cache size (approximate number of entries), or -1 if the number of entries is unknown or too expensive to compute.
      Returns:
      the approximate number of entries, or -1