diff options
-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 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) |