diff --git a/core/lib/Drupal/Core/Cache/ChainedFastBackend.php b/core/lib/Drupal/Core/Cache/ChainedFastBackend.php
index 62839c2..52e70dc 100644
--- a/core/lib/Drupal/Core/Cache/ChainedFastBackend.php
+++ b/core/lib/Drupal/Core/Cache/ChainedFastBackend.php
@@ -79,6 +79,16 @@ class ChainedFastBackend implements CacheBackendInterface, CacheTagsInvalidatorI
   protected $lastWriteTimestamp;
 
   /**
+   * Stores whether the chained fast backend configuration was wrong.
+   *
+   * A broken configuration is one which uses the same cache backend for both
+   * the fast and not fast storage.
+   *
+   * @var bool
+   */
+  protected $brokenConfiguration = FALSE;
+
+  /**
    * Constructs a ChainedFastBackend object.
    *
    * @param \Drupal\Core\Cache\CacheBackendInterface $consistent_backend
@@ -89,6 +99,9 @@ class ChainedFastBackend implements CacheBackendInterface, CacheTagsInvalidatorI
    *   The cache bin for which the object is created.
    */
   public function __construct(CacheBackendInterface $consistent_backend, CacheBackendInterface $fast_backend, $bin) {
+    if ($consistent_backend === $fast_backend) {
+      $this->brokenConfiguration = TRUE;
+    }
     $this->consistentBackend = $consistent_backend;
     $this->fastBackend = $fast_backend;
     $this->bin = 'cache_' . $bin;
@@ -108,6 +121,10 @@ public function get($cid, $allow_invalid = FALSE) {
    * {@inheritdoc}
    */
   public function getMultiple(&$cids, $allow_invalid = FALSE) {
+    if ($this->brokenConfiguration) {
+      return [];
+    }
+
     $cids_copy = $cids;
     $cache = array();
 
@@ -177,6 +194,10 @@ public function getMultiple(&$cids, $allow_invalid = FALSE) {
    * {@inheritdoc}
    */
   public function set($cid, $data, $expire = Cache::PERMANENT, array $tags = array()) {
+    if ($this->brokenConfiguration) {
+      return;
+    }
+
     $this->consistentBackend->set($cid, $data, $expire, $tags);
     $this->markAsOutdated();
     // Don't write the cache tags to the fast backend as any cache tag
@@ -188,6 +209,10 @@ public function set($cid, $data, $expire = Cache::PERMANENT, array $tags = array
    * {@inheritdoc}
    */
   public function setMultiple(array $items) {
+    if ($this->brokenConfiguration) {
+      return;
+    }
+
     $this->consistentBackend->setMultiple($items);
     $this->markAsOutdated();
     // Don't write the cache tags to the fast backend as any cache tag
@@ -307,4 +332,14 @@ protected function markAsOutdated() {
     }
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function __destruct() {
+    if ($this->brokenConfiguration) {
+      // @todo: should throw a proper exception. See https://www.drupal.org/node/2751847.
+      trigger_error('Consistent cache backend and fast cache backend cannot use the same service.', E_USER_ERROR);
+    }
+  }
+
 }
