diff --git a/dmemcache.inc b/dmemcache.inc
index 5b0629a..9ae85ce 100644
--- a/dmemcache.inc
+++ b/dmemcache.inc
@@ -182,6 +182,16 @@ function dmemcache_delete($key, $bin = 'cache', $mc = NULL) {
   $full_key = dmemcache_key($key, $bin);
   $_memcache_statistics[] = array('delete', $bin, $full_key, '');
   if ($mc || ($mc = dmemcache_object($bin))) {
+    // Delete additional keys based on prefix clear list.
+    $prefix_list = variable_get('memcache_prefix_clear_list', array());
+    $prefix = variable_get('memcache_key_prefix', '');
+    foreach ($prefix_list as $clear_prefix) {
+      if ($clear_prefix != $prefix) {
+        $prefixed_key = dmemcache_key($key, $bin, $clear_prefix);
+        $mc->delete($prefixed_key, 0);
+        $_memcache_statistics[] = array('delete', $bin, $clear_prefix, '');
+      }
+    }
     return $mc->delete($full_key, 0);
   }
   return FALSE;
@@ -437,9 +447,13 @@ function dmemcache_object($bin = NULL, $flush = FALSE) {
   return empty($memcacheCache[$bin]) ? FALSE : $memcacheCache[$bin];
 }
 
-function dmemcache_key($key, $bin = 'cache') {
-  $prefix = '';
-  if ($prefix = variable_get('memcache_key_prefix', '')) {
+function dmemcache_key($key, $bin = 'cache', $prefix = '') {
+  if (empty($prefix)) {
+    if ($prefix = variable_get('memcache_key_prefix', '')) {
+      $prefix .= '-';
+    }
+  }
+  else {
     $prefix .= '-';
   }
   // When simpletest is running, emulate the simpletest database prefix here
