summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuper Rouch <luper.rouch@gmail.com>2012-09-12 17:09:59 +0200
committerLuper Rouch <luper.rouch@gmail.com>2012-09-12 17:13:47 +0200
commit3b0932b8a84d66a7586e3ae78ce4f5c102db4030 (patch)
tree158811f945069e4e0b480135a8f990483a91cf58
parent520984447ec9a7f4a543ec0fe6201d2a889c74c8 (diff)
downloadredis-py-3b0932b8a84d66a7586e3ae78ce4f5c102db4030.tar.gz
added PEXPIRE/PTTL support (redis 2.6.0)
-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)