diff --git a/lib/SimpleSAML/Memcache.php b/lib/SimpleSAML/Memcache.php
index 223de710a064e9dd89588a604f38a61b458fb982..9dbbe5f1dfd42d37acf5d78ef6f3b587e2da3664 100644
--- a/lib/SimpleSAML/Memcache.php
+++ b/lib/SimpleSAML/Memcache.php
@@ -116,18 +116,23 @@ class SimpleSAML_Memcache {
 	 *
 	 * @param $key    The key of the data.
 	 * @param $value  The value of the data.
+	 * @param int|NULL $expire  The expiration timestamp of the data.
 	 */
-	public static function set($key, $value) {
+	public static function set($key, $value, $expire = NULL) {
 		$savedInfo = array(
 			'timestamp' => microtime(TRUE),
 			'data' => $value
 			);
 
+		if ($expire === NULL) {
+			$expire = self::getExpireTime();
+		}
+
 		$savedInfoSerialized = serialize($savedInfo);
 
 		/* Store this object to all groups of memcache servers. */
 		foreach(self::getMemcacheServers() as $server) {
-			$server->set($key, $savedInfoSerialized, 0, self::getExpireTime());
+			$server->set($key, $savedInfoSerialized, 0, $expire);
 		}
 	}