diff --git a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/CachingAsyncConsistentMap.java b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/CachingAsyncConsistentMap.java
index cedd810..24b6931 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/CachingAsyncConsistentMap.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/primitives/impl/CachingAsyncConsistentMap.java
@@ -17,6 +17,7 @@
 
 import static org.slf4j.LoggerFactory.getLogger;
 
+import java.util.Objects;
 import java.util.concurrent.CompletableFuture;
 import java.util.function.BiFunction;
 import java.util.function.Consumer;
@@ -40,7 +41,9 @@
  * The cache entries are automatically invalidated when updates are detected either locally or
  * remotely.
  * <p> This implementation only attempts to serve cached entries for {@link AsyncConsistentMap#get get}
- * calls. All other calls skip the cache and directly go the backing map.
+ * {@link AsyncConsistentMap#getOrDefault(Object, Object) getOrDefault}, and
+ * {@link AsyncConsistentMap#containsKey(Object) containsKey} calls. All other calls skip the cache
+ * and directly go the backing map.
  *
  * @param <K> key type
  * @param <V> value type
@@ -149,12 +152,28 @@
     }
 
     @Override
+    public CompletableFuture<Versioned<V>> putIfAbsent(K key, V value) {
+        return super.putIfAbsent(key, value)
+                .whenComplete((r, e) -> cache.invalidate(key));
+    }
+
+    @Override
     public CompletableFuture<Versioned<V>> remove(K key) {
         return super.remove(key)
                 .whenComplete((r, e) -> cache.invalidate(key));
     }
 
     @Override
+    public CompletableFuture<Boolean> containsKey(K key) {
+        return cache.getUnchecked(key).thenApply(Objects::nonNull)
+                .whenComplete((r, e) -> {
+                    if (e != null) {
+                        cache.invalidate(key);
+                    }
+                });
+    }
+
+    @Override
     public CompletableFuture<Void> clear() {
         return super.clear()
                 .whenComplete((r, e) -> cache.invalidateAll());
