diff --git a/lib/Redis/Client.php b/lib/Redis/Client.php
index a8d8592..58bf96c 100644
--- a/lib/Redis/Client.php
+++ b/lib/Redis/Client.php
@@ -26,6 +26,11 @@ class Redis_Client {
   const REDIS_DEFAULT_BASE = NULL;
 
   /**
+   * Redis default password: will not authenticate.
+   */
+  const REDIS_DEFAULT_PASSWORD = NULL;
+
+  /**
    * Cache implementation namespace.
    */
   const REDIS_IMPL_CACHE = 'Redis_Cache_';
@@ -117,7 +122,8 @@ class Redis_Client {
       self::$_client = self::getClientInterface()->getClient(
         isset($conf['redis_client_host']) ? $conf['redis_client_host'] : self::REDIS_DEFAULT_HOST,
         isset($conf['redis_client_port']) ? $conf['redis_client_port'] : self::REDIS_DEFAULT_PORT,
-        isset($conf['redis_client_base']) ? $conf['redis_client_base'] : self::REDIS_DEFAULT_BASE);
+        isset($conf['redis_client_base']) ? $conf['redis_client_base'] : self::REDIS_DEFAULT_BASE,
+        isset($conf['redis_client_password']) ? $conf['redis_client_password'] : self::REDIS_DEFAULT_PASSWORD);
     }
 
     return self::$_client;
@@ -148,3 +154,4 @@ class Redis_Client {
     return $className;
   }
 }
+
diff --git a/lib/Redis/Client/PhpRedis.php b/lib/Redis/Client/PhpRedis.php
index c561c6c..31e8b30 100644
--- a/lib/Redis/Client/PhpRedis.php
+++ b/lib/Redis/Client/PhpRedis.php
@@ -5,9 +5,13 @@
  */
 class Redis_Client_PhpRedis implements Redis_Client_Interface {
 
-  public function getClient($host = NULL, $port = NULL, $base = NULL) {
+  public function getClient($host = NULL, $port = NULL, $base = NULL, $password = NULL) {
     $client = new Redis;
     $client->connect($host, $port);
+    
+    if (isset($password)) {
+      $client->auth($password);
+    }
 
     if (isset($base)) {
       $client->select($base);
diff --git a/lib/Redis/Client/Predis.php b/lib/Redis/Client/Predis.php
index eefc67a..7d1e15c 100644
--- a/lib/Redis/Client/Predis.php
+++ b/lib/Redis/Client/Predis.php
@@ -48,7 +48,7 @@ class Redis_Client_Predis implements Redis_Client_Interface {
     }
   }
 
-  public function getClient($host = NULL, $port = NULL, $base = NULL) {
+  public function getClient($host = NULL, $port = NULL, $base = NULL, $password = NULL) {
     $connectionInfo = array(
       'host'     => $host,
       'port'     => $port,
@@ -63,7 +63,13 @@ class Redis_Client_Predis implements Redis_Client_Interface {
 
     self::setPredisAutoload();
 
-    return new Predis\Client($connectionInfo);
+    $client = new Predis\Client($connectionInfo);
+
+    if (isset($password)) {
+      $client->auth($password);
+    }
+
+    return $client;
   }
 
   public function getName() {
diff --git a/redis.admin.inc b/redis.admin.inc
index 91d6eba..e057f19 100644
--- a/redis.admin.inc
+++ b/redis.admin.inc
@@ -41,6 +41,12 @@ function redis_settings_form($form, &$form_state) {
     '#default_value' => variable_get('redis_client_base', NULL),
     '#description' => t("Redis server database. Default is none, Redis server will autoselect the database 0."),
   );
+  $form['connection']['redis_client_password'] = array(
+    '#type' => 'password',
+    '#title' => t("Password"),
+    '#default_value' => variable_get('redis_client_password', NULL),
+    '#description' => t("Redis password for authentication. Default is none."),
+  );
   $form['connection']['redis_client_interface'] = array(
     '#type' => 'radios',
     '#title' => t("Client"),
