summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy McCurdy <sedrik@gmail.com>2012-10-07 21:13:45 -0700
committerAndy McCurdy <sedrik@gmail.com>2012-10-07 21:13:45 -0700
commitb4e0e98e9c94a55fd64e5c38e763ec5a26c47f4e (patch)
treeac89433cb26f164f768d0aa3201d22b6ee4d98a4
parent7661d4199fa4393a1a55a26c09e921ff7dc98dbc (diff)
parent3b0932b8a84d66a7586e3ae78ce4f5c102db4030 (diff)
downloadredis-py-b4e0e98e9c94a55fd64e5c38e763ec5a26c47f4e.tar.gz
Merge pull request #282 from flupke/pexpire
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 104ae85..42a01dd 100644
--- a/redis/client.py
+++ b/redis/client.py
@@ -513,6 +513,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
@@ -661,6 +671,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 d12995b..e8f6c7a 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)