summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--redis/client.py14
-rw-r--r--tests/server_commands.py15
2 files changed, 29 insertions, 0 deletions
diff --git a/redis/client.py b/redis/client.py
index 7739cbf..96fe53b 100644
--- a/redis/client.py
+++ b/redis/client.py
@@ -512,6 +512,16 @@ class StrictRedis(object):
time = int(time.total_seconds())
return self.execute_command('EXPIRE', name, time)
+ def pexpire(self, name, time):
+ """
+ Set an expire flag on key ``name`` for ``time`` milliseconds.
+ ``time`` can be represented by an integer or a Python timedelta
+ object.
+ """
+ if isinstance(time, datetime.timedelta):
+ time = int(time.total_seconds()) * 1000
+ return self.execute_command('PEXPIRE', name, time)
+
def expireat(self, name, when):
"""
Set an expire flag on key ``name``. ``when`` can be represented
@@ -660,6 +670,10 @@ class StrictRedis(object):
"Returns the number of seconds until the key ``name`` will expire"
return self.execute_command('TTL', name)
+ def pttl(self, name):
+ "Returns the number of milliseconds until the key ``name`` will expire"
+ return self.execute_command('PTTL', name)
+
def type(self, name):
"Returns the type of key ``name``"
return self.execute_command('TYPE', name)
diff --git a/tests/server_commands.py b/tests/server_commands.py
index df92bfb..b7dcf53 100644
--- a/tests/server_commands.py
+++ b/tests/server_commands.py
@@ -168,6 +168,21 @@ class ServerCommandsTestCase(unittest.TestCase):
self.assertEquals(self.client.persist('a'), True)
self.assertEquals(self.client.ttl('a'), None)
+ def test_pexpire(self):
+ version = self.client.info()['redis_version']
+ if StrictVersion(version) < StrictVersion('2.6.0'):
+ try:
+ raise unittest.SkipTest()
+ except AttributeError:
+ return
+
+ self.assertEquals(self.client.pexpire('a', 10000), False)
+ self.client['a'] = 'foo'
+ self.assertEquals(self.client.expire('a', 10000), True)
+ self.assertEquals(self.client.pttl('a'), 10000)
+ self.assertEquals(self.client.persist('a'), True)
+ self.assertEquals(self.client.pttl('a'), None)
+
def test_expireat(self):
expire_at = datetime.datetime.now() + datetime.timedelta(minutes=1)
self.assertEquals(self.client.expireat('a', expire_at), False)