diff --git a/README.txt b/README.txt
index c8f90ba..12cf594 100644
--- a/README.txt
+++ b/README.txt
@@ -245,7 +245,8 @@ $conf['memcache_options'] = array(
 );
 
 
-## Stampede protection
+## Stampede protection ##
+
 Memcache now includes stampede protection for expired and invalid cache items.
 To enable stampede protection, enable it in settings.php
 $conf['memcache_stampede_protection'] = TRUE;
@@ -275,3 +276,10 @@ When setting these variables, note that:
  - wait_time * wait_limit is designed to default to a number less than
    standard web server timeouts (i.e. 15 seconds vs. apache's default of
    30 seconds).
+
+## Persistent connections ##
+
+You can specify whether or not to connect to use persistent connections in
+settings.php. If you do not specify a value it defaults to FALSE. Example:
+
+$conf['memcache_persistent'] = TRUE;
diff --git a/dmemcache.inc b/dmemcache.inc
index 884ca05..1f830de 100644
--- a/dmemcache.inc
+++ b/dmemcache.inc
@@ -225,7 +225,7 @@ function dmemcache_stats($bin = 'cache', $type = '') {
  * @return an Memcache object or FALSE.
  */
 function dmemcache_object($bin = NULL, $flush = FALSE) {
-  static $extension, $memcacheCache = array(), $memcache_servers, $memcache_bins;
+  static $extension, $memcacheCache = array(), $memcache_servers, $memcache_bins, $memcache_persistent;
 
   if (!isset($extension)) {
     // If an extension is specified in settings.php, use that when available.
@@ -295,6 +295,12 @@ function dmemcache_object($bin = NULL, $flush = FALSE) {
         drupal_set_message('You must enable the PECL memcached or memcache extension to use memcache.inc.', 'error');
         return;
       }
+
+      // Indicate wether to connect to memcache using a persistent connection.
+      if (!isset($memcache_persistent)) {
+        $memcache_persistent = variable_get('memcache_persistent', FALSE);
+      }
+
       // A variable to track whether we've connected to the first server.
       $init = FALSE;
 
@@ -305,13 +311,16 @@ function dmemcache_object($bin = NULL, $flush = FALSE) {
 
           // This is a server that belongs to this cluster.
           if ($memcache instanceof Memcache && !$init) {
-            // If using PECL memcache extension, use ->connect for first server
-            if ($memcache->connect($host, $port)) {
+            // If using PECL memcache extension, use ->(p)connect for first server
+            if ($memcache_persistent && $memcache->pconnect($host, $port)) {
               $init = TRUE;
             }
-          }
-          else if ($memcache->addServer($host, $port) && !$init) {
+            elseif (!memcache_persistent && $memcache->connect($host, $port)) {
               $init = TRUE;
+            }
+          }
+          elseif ($memcache->addServer($host, $port, $memcache_persistent) && !$init) {
+            $init = TRUE;
           }
         }
       }
