diff options
author | Andy McCurdy <sedrik@gmail.com> | 2012-10-07 21:13:45 -0700 |
---|---|---|
committer | Andy McCurdy <sedrik@gmail.com> | 2012-10-07 21:13:45 -0700 |
commit | b4e0e98e9c94a55fd64e5c38e763ec5a26c47f4e (patch) | |
tree | ac89433cb26f164f768d0aa3201d22b6ee4d98a4 | |
parent | 7661d4199fa4393a1a55a26c09e921ff7dc98dbc (diff) | |
parent | 3b0932b8a84d66a7586e3ae78ce4f5c102db4030 (diff) | |
download | redis-py-b4e0e98e9c94a55fd64e5c38e763ec5a26c47f4e.tar.gz |
Merge pull request #282 from flupke/pexpire
Added PEXPIRE/PTTL support (redis 2.6.0)
-rw-r--r-- | redis/client.py | 14 | ||||
-rw-r--r-- | tests/server_commands.py | 15 |
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) |