diff --git a/core/includes/module.inc b/core/includes/module.inc
index f4fac6e..afe65fe 100644
--- a/core/includes/module.inc
+++ b/core/includes/module.inc
@@ -69,7 +69,7 @@ function system_list_reset() {
   // @todo Trigger an event upon module install/uninstall and theme
   //   enable/disable, and move this into an event subscriber.
   // @see https://drupal.org/node/2206347
-  Cache::invalidateTags(['config:core.extension']);
+  \Drupal::service('cache_tags.invalidator')->invalidateTags(['config:core.extension']);
 }
 
 /**
diff --git a/core/lib/Drupal/Core/Cache/CacheCollector.php b/core/lib/Drupal/Core/Cache/CacheCollector.php
index a6d8ab5..6889367 100644
--- a/core/lib/Drupal/Core/Cache/CacheCollector.php
+++ b/core/lib/Drupal/Core/Cache/CacheCollector.php
@@ -115,7 +115,7 @@
    *   (optional) The tags to specify for the cache item.
    */
   public function __construct($cid, CacheBackendInterface $cache, LockBackendInterface $lock, array $tags = array()) {
-    Cache::validateTags($tags);
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($tags);
     $this->cid = $cid;
     $this->cache = $cache;
     $this->tags = $tags;
@@ -280,7 +280,7 @@ public function reset() {
   public function clear() {
     $this->reset();
     if ($this->tags) {
-      Cache::invalidateTags($this->tags);
+      \Drupal::service('cache_tags.invalidator')->invalidateTags($this->tags);
     }
     else {
       $this->cache->delete($this->getCid());
diff --git a/core/lib/Drupal/Core/Config/CachedStorage.php b/core/lib/Drupal/Core/Config/CachedStorage.php
index 5023c35..be88e98 100644
--- a/core/lib/Drupal/Core/Config/CachedStorage.php
+++ b/core/lib/Drupal/Core/Config/CachedStorage.php
@@ -131,7 +131,7 @@ public function write($name, array $data) {
       // While not all written data is read back, setting the cache instead of
       // just deleting it avoids cache rebuild stampedes.
       $this->cache->set($this->getCacheKey($name), $data);
-      Cache::invalidateTags(array($this::FIND_BY_PREFIX_CACHE_TAG));
+      \Drupal::service('cache_tags.invalidator')->invalidateTags(array($this::FIND_BY_PREFIX_CACHE_TAG));
       $this->findByPrefixCache = array();
       return TRUE;
     }
@@ -146,7 +146,7 @@ public function delete($name) {
     // rebuilding the cache before the storage is gone.
     if ($this->storage->delete($name)) {
       $this->cache->delete($this->getCacheKey($name));
-      Cache::invalidateTags(array($this::FIND_BY_PREFIX_CACHE_TAG));
+      \Drupal::service('cache_tags.invalidator')->invalidateTags(array($this::FIND_BY_PREFIX_CACHE_TAG));
       $this->findByPrefixCache = array();
       return TRUE;
     }
@@ -162,7 +162,7 @@ public function rename($name, $new_name) {
     if ($this->storage->rename($name, $new_name)) {
       $this->cache->delete($this->getCacheKey($name));
       $this->cache->delete($this->getCacheKey($new_name));
-      Cache::invalidateTags(array($this::FIND_BY_PREFIX_CACHE_TAG));
+      \Drupal::service('cache_tags.invalidator')->invalidateTags(array($this::FIND_BY_PREFIX_CACHE_TAG));
       $this->findByPrefixCache = array();
       return TRUE;
     }
diff --git a/core/lib/Drupal/Core/Config/Config.php b/core/lib/Drupal/Core/Config/Config.php
index 51ade6c..27bbd33 100644
--- a/core/lib/Drupal/Core/Config/Config.php
+++ b/core/lib/Drupal/Core/Config/Config.php
@@ -224,7 +224,7 @@ public function save() {
 
     $this->storage->write($this->name, $this->data);
     if (!$this->isNew) {
-      Cache::invalidateTags($this->getCacheTags());
+      \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
     }
     $this->isNew = FALSE;
     $this->eventDispatcher->dispatch(ConfigEvents::SAVE, new ConfigCrudEvent($this));
@@ -241,7 +241,8 @@ public function save() {
   public function delete() {
     $this->data = array();
     $this->storage->delete($this->name);
-    Cache::invalidateTags($this->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
+
     $this->isNew = TRUE;
     $this->resetOverriddenData();
     $this->eventDispatcher->dispatch(ConfigEvents::DELETE, new ConfigCrudEvent($this));
diff --git a/core/lib/Drupal/Core/Config/ConfigFactory.php b/core/lib/Drupal/Core/Config/ConfigFactory.php
index 46aaead..40edb18 100644
--- a/core/lib/Drupal/Core/Config/ConfigFactory.php
+++ b/core/lib/Drupal/Core/Config/ConfigFactory.php
@@ -260,7 +260,7 @@ public function reset($name = NULL) {
    * {@inheritdoc}
    */
   public function rename($old_name, $new_name) {
-    Cache::invalidateTags($this->get($old_name)->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->get($old_name)->getCacheTags());
     $this->storage->rename($old_name, $new_name);
 
     // Clear out the static cache of any references to the old name.
diff --git a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
index b943d17..f6d6280 100644
--- a/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
+++ b/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php
@@ -164,7 +164,7 @@ public function enable() {
    */
   public function disable() {
     // An entity was disabled, invalidate its own cache tag.
-    Cache::invalidateTags($this->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
     return $this->setStatus(FALSE);
   }
 
@@ -428,7 +428,7 @@ public function onDependencyRemoval(array $dependencies) {
    * already invalidates it.
    */
   protected function invalidateTagsOnSave($update) {
-    Cache::invalidateTags($this->getEntityType()->getListCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getEntityType()->getListCacheTags());
   }
 
   /**
@@ -438,7 +438,7 @@ protected function invalidateTagsOnSave($update) {
    * config system already invalidates them.
    */
   protected static function invalidateTagsOnDelete(EntityTypeInterface $entity_type, array $entities) {
-    Cache::invalidateTags($entity_type->getListCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($entity_type->getListCacheTags());
   }
 
 }
diff --git a/core/lib/Drupal/Core/Entity/Entity.php b/core/lib/Drupal/Core/Entity/Entity.php
index 08c35c7..f7fe46d 100644
--- a/core/lib/Drupal/Core/Entity/Entity.php
+++ b/core/lib/Drupal/Core/Entity/Entity.php
@@ -480,7 +480,7 @@ protected function invalidateTagsOnSave($update) {
       // An existing entity was updated, also invalidate its unique cache tag.
       $tags = Cache::mergeTags($tags, $this->getCacheTags());
     }
-    Cache::invalidateTags($tags);
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($tags);
   }
 
   /**
@@ -501,7 +501,7 @@ protected static function invalidateTagsOnDelete(EntityTypeInterface $entity_typ
       // must invalidate its list cache tags as well.)
       $tags = Cache::mergeTags($tags, $entity->getCacheTags());
     }
-    Cache::invalidateTags($tags);
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($tags);
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Entity/EntityManager.php b/core/lib/Drupal/Core/Entity/EntityManager.php
index 96365cc..7bb2557 100644
--- a/core/lib/Drupal/Core/Entity/EntityManager.php
+++ b/core/lib/Drupal/Core/Entity/EntityManager.php
@@ -686,7 +686,7 @@ public function clearCachedFieldDefinitions() {
     $this->fieldMapByFieldType = array();
     $this->displayModeInfo = array();
     $this->extraFields = array();
-    Cache::invalidateTags(array('entity_field_info'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('entity_field_info'));
     // The typed data manager statically caches prototype objects with injected
     // definitions, clear those as well.
     $this->typedDataManager->clearCachedDefinitions();
@@ -697,7 +697,7 @@ public function clearCachedFieldDefinitions() {
    */
   public function clearCachedBundles() {
     $this->bundleInfo = array();
-    Cache::invalidateTags(array('entity_bundles'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('entity_bundles'));
     // Entity bundles are exposed as data types, clear that cache too.
     $this->typedDataManager->clearCachedDefinitions();
   }
diff --git a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
index a6688f4..df475f1 100644
--- a/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
+++ b/core/lib/Drupal/Core/Entity/EntityViewBuilder.php
@@ -373,10 +373,10 @@ public function resetCache(array $entities = NULL) {
       foreach ($entities as $entity) {
         $tags = Cache::mergeTags($tags, $entity->getCacheTags(), $entity->getEntityType()->getListCacheTags());
       }
-      Cache::invalidateTags($tags);
+      \Drupal::service('cache_tags.invalidator')->invalidateTags($tags);
     }
     else {
-      Cache::invalidateTags($this->getCacheTags());
+      \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
     }
   }
 
diff --git a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
index f9a2727..03eb50e 100644
--- a/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
+++ b/core/lib/Drupal/Core/Entity/Sql/SqlContentEntityStorage.php
@@ -587,7 +587,7 @@ public function resetCache(array $ids = NULL) {
     else {
       $this->entities = array();
       if ($this->entityType->isPersistentlyCacheable()) {
-        Cache::invalidateTags(array($this->entityTypeId . '_values'));
+        \Drupal::service('cache_tags.invalidator')->invalidateTags(array($this->entityTypeId . '_values'));
       }
     }
   }
diff --git a/core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php
index 57cc618..41a0271 100644
--- a/core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/MenuRouterRebuildSubscriber.php
@@ -57,7 +57,7 @@ public function __construct(LockBackendInterface $lock, MenuLinkManagerInterface
    */
   public function onRouterRebuild(Event $event) {
     $this->menuLinksRebuild();
-    Cache::invalidateTags(array('local_task'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('local_task'));
   }
 
   /**
diff --git a/core/lib/Drupal/Core/Extension/ThemeHandler.php b/core/lib/Drupal/Core/Extension/ThemeHandler.php
index d21e256..ce85ea7 100644
--- a/core/lib/Drupal/Core/Extension/ThemeHandler.php
+++ b/core/lib/Drupal/Core/Extension/ThemeHandler.php
@@ -629,7 +629,7 @@ protected function resetSystem() {
 
     // @todo It feels wrong to have the requirement to clear the local tasks
     //   cache here.
-    Cache::invalidateTags(array('local_task'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('local_task'));
     $this->themeRegistryRebuild();
   }
 
diff --git a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
index 95928e4..cd1b5b6 100644
--- a/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
+++ b/core/lib/Drupal/Core/Plugin/DefaultPluginManager.php
@@ -161,7 +161,7 @@ public function clearCachedDefinitions() {
     if ($this->cacheBackend) {
       if ($this->cacheTags) {
         // Use the cache tags to clear the cache.
-        Cache::invalidateTags($this->cacheTags);
+        \Drupal::service('cache_tags.invalidator')->invalidateTags($this->cacheTags);
       }
       else {
         $this->cacheBackend->delete($this->cacheKey);
diff --git a/core/lib/Drupal/Core/Theme/Registry.php b/core/lib/Drupal/Core/Theme/Registry.php
index 8400e20..a94e42a 100644
--- a/core/lib/Drupal/Core/Theme/Registry.php
+++ b/core/lib/Drupal/Core/Theme/Registry.php
@@ -593,7 +593,7 @@ public function reset() {
     $this->runtimeRegistry = NULL;
 
     $this->registry = NULL;
-    Cache::invalidateTags(array('theme_registry'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('theme_registry'));
     return $this;
   }
 
diff --git a/core/lib/Drupal/Core/Utility/Token.php b/core/lib/Drupal/Core/Utility/Token.php
index 0bf3367..0a87b56 100644
--- a/core/lib/Drupal/Core/Utility/Token.php
+++ b/core/lib/Drupal/Core/Utility/Token.php
@@ -347,7 +347,7 @@ public function setInfo(array $tokens) {
    */
   public function resetInfo() {
     $this->tokenInfo = NULL;
-    Cache::invalidateTags(array(
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array(
       static::TOKEN_INFO_CACHE_TAG => TRUE,
     ));
   }
diff --git a/core/modules/aggregator/src/Entity/Item.php b/core/modules/aggregator/src/Entity/Item.php
index 21a0dca..0e93039 100644
--- a/core/modules/aggregator/src/Entity/Item.php
+++ b/core/modules/aggregator/src/Entity/Item.php
@@ -224,7 +224,7 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) {
     // handles the regular cases. The Item entity has one special case: a newly
     // created Item is *also* associated with a Feed, so we must invalidate the
     // associated Feed's cache tag.
-    Cache::invalidateTags($this->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
   }
 
   /**
diff --git a/core/modules/block/src/Entity/Block.php b/core/modules/block/src/Entity/Block.php
index 4af2f80..e923691 100644
--- a/core/modules/block/src/Entity/Block.php
+++ b/core/modules/block/src/Entity/Block.php
@@ -233,7 +233,7 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) {
     // so we must invalidate the associated block's cache tag (which includes
     // the theme cache tag).
     if (!$update) {
-      Cache::invalidateTags($this->getCacheTags());
+      \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
     }
   }
 
diff --git a/core/modules/block/src/Tests/BlockCacheTest.php b/core/modules/block/src/Tests/BlockCacheTest.php
index 5ea0142..c29636e 100644
--- a/core/modules/block/src/Tests/BlockCacheTest.php
+++ b/core/modules/block/src/Tests/BlockCacheTest.php
@@ -95,7 +95,7 @@ function testCachePerRole() {
     $this->assertText($old_content, 'Block is served from the cache.');
 
     // Clear the cache and verify that the stale data is no longer there.
-    Cache::invalidateTags(array('block_view'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('block_view'));
     $this->drupalGet('');
     $this->assertNoText($old_content, 'Block cache clear removes stale cache data.');
     $this->assertText($current_content, 'Fresh block content is displayed after clearing the cache.');
diff --git a/core/modules/block/src/Tests/BlockTest.php b/core/modules/block/src/Tests/BlockTest.php
index 1092ea5..b178809 100644
--- a/core/modules/block/src/Tests/BlockTest.php
+++ b/core/modules/block/src/Tests/BlockTest.php
@@ -397,7 +397,7 @@ public function testBlockCacheTags() {
 
     // The plugin providing the "Powered by Drupal" block is modified; verify a
     // cache miss.
-    Cache::invalidateTags(array('block_plugin:system_powered_by_block'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('block_plugin:system_powered_by_block'));
     $this->drupalGet('<front>');
     $this->assertEqual($this->drupalGetHeader('X-Drupal-Cache'), 'MISS');
 
diff --git a/core/modules/book/src/BookManager.php b/core/modules/book/src/BookManager.php
index cc6b8bb..bf012ae 100644
--- a/core/modules/book/src/BookManager.php
+++ b/core/modules/book/src/BookManager.php
@@ -433,7 +433,7 @@ public function deleteFromBook($nid) {
     }
     $this->updateOriginalParent($original);
     $this->books = NULL;
-    Cache::invalidateTags(array('bid:' . $original['bid']));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('bid:' . $original['bid']));
   }
 
   /**
@@ -763,7 +763,7 @@ public function saveBookLink(array $link, $new) {
     foreach ($affected_bids as $bid) {
       $cache_tags[] = 'bid:' . $bid;
     }
-    Cache::invalidateTags($cache_tags);
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($cache_tags);
     return $link;
   }
 
diff --git a/core/modules/color/color.module b/core/modules/color/color.module
index 8bbb035..0b5a564 100644
--- a/core/modules/color/color.module
+++ b/core/modules/color/color.module
@@ -490,7 +490,7 @@ function color_scheme_form_submit($form, FormStateInterface $form_state) {
     ->save();
 
   // Clear the library cache.
-  Cache::invalidateTags(['library_info']);
+  \Drupal::service('cache_tags.invalidator')->invalidateTags(['library_info']);
 }
 
 /**
diff --git a/core/modules/image/src/Entity/ImageStyle.php b/core/modules/image/src/Entity/ImageStyle.php
index a87554c..d9ddb5d 100644
--- a/core/modules/image/src/Entity/ImageStyle.php
+++ b/core/modules/image/src/Entity/ImageStyle.php
@@ -262,7 +262,7 @@ public function flush($path = NULL) {
     // Clear caches so that formatters may be added for this style.
     drupal_theme_rebuild();
 
-    Cache::invalidateTags($this->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
 
     return $this;
   }
diff --git a/core/modules/language/src/Config/LanguageConfigOverride.php b/core/modules/language/src/Config/LanguageConfigOverride.php
index 5be48ad..f74af21 100644
--- a/core/modules/language/src/Config/LanguageConfigOverride.php
+++ b/core/modules/language/src/Config/LanguageConfigOverride.php
@@ -62,7 +62,7 @@ public function save() {
     // because a language config override object uses the same cache tag as the
     // default configuration object. Hence creating a language override is like
     // an update of configuration, but only for a specific language.
-    Cache::invalidateTags($this->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
     $this->isNew = FALSE;
     $this->eventDispatcher->dispatch(LanguageConfigOverrideEvents::SAVE_OVERRIDE, new LanguageConfigOverrideCrudEvent($this));
     $this->originalData = $this->data;
@@ -75,7 +75,7 @@ public function save() {
   public function delete() {
     $this->data = array();
     $this->storage->delete($this->name);
-    Cache::invalidateTags($this->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
     $this->isNew = TRUE;
     $this->eventDispatcher->dispatch(LanguageConfigOverrideEvents::DELETE_OVERRIDE, new LanguageConfigOverrideCrudEvent($this));
     $this->originalData = $this->data;
diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module
index 52a5eb9..dbdb23f 100644
--- a/core/modules/locale/locale.module
+++ b/core/modules/locale/locale.module
@@ -986,7 +986,7 @@ function _locale_refresh_translations($langcodes, $lids = array()) {
     }
   }
   // Clear locale cache.
-  Cache::invalidateTags(array('locale'));
+  \Drupal::service('cache_tags.invalidator')->invalidateTags(array('locale'));
 }
 
 /**
diff --git a/core/modules/shortcut/src/Entity/Shortcut.php b/core/modules/shortcut/src/Entity/Shortcut.php
index 91a7f0b..03aa158 100644
--- a/core/modules/shortcut/src/Entity/Shortcut.php
+++ b/core/modules/shortcut/src/Entity/Shortcut.php
@@ -161,7 +161,7 @@ public function postSave(EntityStorageInterface $storage, $update = TRUE) {
     // newly created shortcut is *also* added to a shortcut set, so we must
     // invalidate the associated shortcut set's cache tag.
     if (!$update) {
-      Cache::invalidateTags($this->getCacheTags());
+      \Drupal::service('cache_tags.invalidator')->invalidateTags($this->getCacheTags());
     }
   }
 
diff --git a/core/modules/system/src/Tests/Bootstrap/PageCacheTest.php b/core/modules/system/src/Tests/Bootstrap/PageCacheTest.php
index c3538f2..131115e 100644
--- a/core/modules/system/src/Tests/Bootstrap/PageCacheTest.php
+++ b/core/modules/system/src/Tests/Bootstrap/PageCacheTest.php
@@ -68,7 +68,7 @@ function testPageCacheTags() {
     );
     $this->assertIdentical($cache_entry->tags, $expected_tags);
 
-    Cache::invalidateTags($tags);
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($tags);
     $this->drupalGet($path);
     $this->assertEqual($this->drupalGetHeader('X-Drupal-Cache'), 'MISS');
   }
diff --git a/core/modules/system/src/Tests/Cache/DatabaseBackendTagTest.php b/core/modules/system/src/Tests/Cache/DatabaseBackendTagTest.php
index 24cef4d..9743453 100644
--- a/core/modules/system/src/Tests/Cache/DatabaseBackendTagTest.php
+++ b/core/modules/system/src/Tests/Cache/DatabaseBackendTagTest.php
@@ -49,7 +49,7 @@ public function testTagInvalidations() {
     }
 
     $invalidations_before = intval(db_select('cachetags')->fields('cachetags', array('invalidations'))->condition('tag', 'test_tag:2')->execute()->fetchField());
-    Cache::invalidateTags(array('test_tag:2'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags((array('test_tag:2'));
 
     // Test that cache entry has been invalidated in multiple bins.
     foreach ($bins as $bin) {
diff --git a/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php b/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php
index c451947..416b9f9 100644
--- a/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php
+++ b/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php
@@ -536,7 +536,7 @@ function testInvalidateTags() {
     $this->assertTrue($backend->get('test_cid_invalidate1') && $backend->get('test_cid_invalidate2'), 'Two cache items were created.');
 
     // Invalidate test_tag of value 1. This should invalidate both entries.
-    Cache::invalidateTags(array('test_tag:2'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('test_tag:2'));
     $this->assertFalse($backend->get('test_cid_invalidate1') || $backend->get('test_cid_invalidate2'), 'Two cache items invalidated after invalidating a cache tag.');
     $this->assertTrue($backend->get('test_cid_invalidate1', TRUE) && $backend->get('test_cid_invalidate2', TRUE), 'Cache items not deleted after invalidating a cache tag.');
 
@@ -546,7 +546,7 @@ function testInvalidateTags() {
     $this->assertTrue($backend->get('test_cid_invalidate1') && $backend->get('test_cid_invalidate2'), 'Two cache items were created.');
 
     // Invalidate test_tag of value 1. This should invalidate both entries.
-    Cache::invalidateTags(array('test_tag:1'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('test_tag:1'));
     $this->assertFalse($backend->get('test_cid_invalidate1') || $backend->get('test_cid_invalidate2'), 'Two caches removed after invalidating a cache tag.');
     $this->assertTrue($backend->get('test_cid_invalidate1', TRUE) && $backend->get('test_cid_invalidate2', TRUE), 'Cache items not deleted after invalidating a cache tag.');
 
@@ -555,7 +555,7 @@ function testInvalidateTags() {
     $backend->set('test_cid_invalidate2', $this->defaultValue, Cache::PERMANENT, array('test_tag:2'));
     $backend->set('test_cid_invalidate3', $this->defaultValue, Cache::PERMANENT, array('test_tag_foo:3'));
     $this->assertTrue($backend->get('test_cid_invalidate1') && $backend->get('test_cid_invalidate2') && $backend->get('test_cid_invalidate3'), 'Three cached items were created.');
-    Cache::invalidateTags(array('test_tag_foo:3'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('test_tag_foo:3'));
     $this->assertTrue($backend->get('test_cid_invalidate1') && $backend->get('test_cid_invalidate2'), 'Cache items not matching the tag were not invalidated.');
     $this->assertFalse($backend->get('test_cid_invalidated3'), 'Cached item matching the tag was removed.');
 
@@ -569,7 +569,7 @@ function testInvalidateTags() {
       $this->assertTrue($this->getCacheBackend($bin)->get('test'), 'Cache item was set in bin.');
     }
 
-    Cache::invalidateTags(array('test_tag:2'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('test_tag:2'));
 
     // Test that cache entry has been invalidated in multple bins.
     foreach ($bins as $bin) {
diff --git a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
index 658136c..e87d3c9 100644
--- a/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityCacheTagsTestBase.php
@@ -506,7 +506,7 @@ public function testReferencedEntity() {
     // a cache miss for every route except the ones for the non-referencing
     // entity and the empty entity listing.
     $this->pass("Test invalidation of referenced entity's cache tag.", 'Debug');
-    Cache::invalidateTags($this->entity->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->entity->getCacheTags());
     $this->verifyPageCache($referencing_entity_path, 'MISS');
     $this->verifyPageCache($listing_path, 'MISS');
     $this->verifyPageCache($nonempty_entity_listing_path, 'MISS');
@@ -522,7 +522,7 @@ public function testReferencedEntity() {
     // there is a cache miss for both the empty entity listing and the non-empty
     // entity listing routes, but not for other routes.
     $this->pass("Test invalidation of referenced entity's list cache tag.", 'Debug');
-    Cache::invalidateTags($this->entity->getEntityType()->getListCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->entity->getEntityType()->getListCacheTags());
     $this->verifyPageCache($empty_entity_listing_path, 'MISS');
     $this->verifyPageCache($nonempty_entity_listing_path, 'MISS');
     $this->verifyPageCache($referencing_entity_path, 'HIT');
@@ -539,7 +539,7 @@ public function testReferencedEntity() {
       // directly, there is a cache miss for both the referencing entity, and the
       // listing of referencing entities, but not for other routes.
       $this->pass("Test invalidation of referenced entity's 'view' cache tag.", 'Debug');
-      Cache::invalidateTags($view_cache_tag);
+      \Drupal::service('cache_tags.invalidator')->invalidateTags($view_cache_tag);
       $this->verifyPageCache($referencing_entity_path, 'MISS');
       $this->verifyPageCache($listing_path, 'MISS');
       $this->verifyPageCache($non_referencing_entity_path, 'HIT');
diff --git a/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php b/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php
index 45dfcf5..6619630 100644
--- a/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php
+++ b/core/modules/system/src/Tests/Entity/EntityWithUriCacheTagsTestBase.php
@@ -112,7 +112,7 @@ public function testEntityUri() {
     // Verify that after invalidating the entity's cache tag directly, there is
     // a cache miss.
     $this->pass("Test invalidation of entity's cache tag.", 'Debug');
-    Cache::invalidateTags($this->entity->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->entity->getCacheTags());
     $this->verifyPageCache($entity_path, 'MISS');
 
     // Verify a cache hit.
@@ -122,7 +122,7 @@ public function testEntityUri() {
     // Verify that after invalidating the generic entity type's view cache tag
     // directly, there is a cache miss.
     $this->pass("Test invalidation of entity's 'view' cache tag.", 'Debug');
-    Cache::invalidateTags($view_cache_tag);
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($view_cache_tag);
     $this->verifyPageCache($entity_path, 'MISS');
 
     // Verify a cache hit.
diff --git a/core/modules/toolbar/src/Tests/ToolbarAdminMenuTest.php b/core/modules/toolbar/src/Tests/ToolbarAdminMenuTest.php
index 6fad815..e4fdf1a 100644
--- a/core/modules/toolbar/src/Tests/ToolbarAdminMenuTest.php
+++ b/core/modules/toolbar/src/Tests/ToolbarAdminMenuTest.php
@@ -267,7 +267,7 @@ function testCacheClearByCacheTag() {
 
     // Log in the admin user and clear the caches for this user using a tag.
     $this->drupalLogin($this->adminUser);
-    Cache::invalidateTags(array('user:' . $admin_user_id));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('user:' . $admin_user_id));
 
     // Assert that no toolbar cache exists for adminUser against the
     // language "en".
diff --git a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
index 56c0fbb..38053e6 100644
--- a/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
+++ b/core/modules/views/src/Plugin/views/cache/CachePluginBase.php
@@ -236,7 +236,7 @@ public function cacheGet($type) {
    * to be sure that we catch everything. Maybe that's a bad idea.
    */
   public function cacheFlush() {
-    Cache::invalidateTags($this->view->storage->getCacheTags());
+    \Drupal::service('cache_tags.invalidator')->invalidateTags($this->view->storage->getCacheTags());
   }
 
   /**
diff --git a/core/modules/views/src/ViewsData.php b/core/modules/views/src/ViewsData.php
index 81469e7..5b34ec6 100644
--- a/core/modules/views/src/ViewsData.php
+++ b/core/modules/views/src/ViewsData.php
@@ -322,6 +322,6 @@ public function clear() {
     $this->storage = array();
     $this->allStorage = array();
     $this->fullyLoaded = FALSE;
-    Cache::invalidateTags(array('views_data'));
+    \Drupal::service('cache_tags.invalidator')->invalidateTags(array('views_data'));
   }
 }
diff --git a/core/modules/views/views.api.php b/core/modules/views/views.api.php
index 120bed0..0de7bca 100644
--- a/core/modules/views/views.api.php
+++ b/core/modules/views/views.api.php
@@ -875,7 +875,7 @@ function hook_views_ui_display_top_links_alter(array &$links, ViewExecutable $vi
  * @see views_invalidate_cache()
  */
 function hook_views_invalidate_cache() {
-  \Drupal\Core\Cache\Cache::invalidateTags(array('views'));
+  \Drupal::service('cache_tags.invalidator')->invalidateTags(array('views'));
 }
 
 /**
diff --git a/core/modules/views/views.module b/core/modules/views/views.module
index d8516be..dbf9130 100644
--- a/core/modules/views/views.module
+++ b/core/modules/views/views.module
@@ -470,7 +470,7 @@ function views_field_config_create(FieldConfigInterface $field) {
  * Implements hook_ENTITY_TYPE_update() for 'field_config'.
  */
 function views_field_config_update(FieldConfigInterface $field) {
-  Cache::invalidateTags(['extension:views']);
+  \Drupal::service('cache_tags.invalidator')->invalidateTags(['extension:views']);
   \Drupal::cache('render')->deleteAll();
 }
 
@@ -478,7 +478,7 @@ function views_field_config_update(FieldConfigInterface $field) {
  * Implements hook_ENTITY_TYPE_delete() for 'field_config'.
  */
 function views_field_config_delete(FieldConfigInterface $field) {
-  Cache::invalidateTags(['extension:views']);
+  \Drupal::service('cache_tags.invalidator')->invalidateTags(['extension:views']);
   \Drupal::cache('render')->deleteAll();
 }
 
@@ -487,7 +487,7 @@ function views_field_config_delete(FieldConfigInterface $field) {
  */
 function views_invalidate_cache() {
   // Clear Views' info cache entries.
-  Cache::invalidateTags(['extension:views']);
+  \Drupal::service('cache_tags.invalidator')->invalidateTags(['extension:views']);
 
   // Set the menu as needed to be rebuilt.
   \Drupal::service('router.builder_indicator')->setRebuildNeeded();
