本文简单介绍了key相关函数操作。
import redis
r = redis.Redis()
为了简单起见,下面出现的代码都省略了上面的两句代码,测试的时候请自行加上。
0.keys
返回给定模式的键名, 模式参数pattern中星号*表示任意字母,问号?表示一个字母。
默认返回所有键:
>>> r.keys() [b'newname', b'addr', b'add', b'ax', b'id', b'axxx', b'age'] >>>
星号参数:
>>> r.keys() [b'newname', b'addr', b'add', b'ax', b'id', b'axxx', b'age'] >>> r.keys(pattern='a*') # 返回所有a开头的键名 [b'addr', b'add', b'ax', b'axxx', b'age'] >>>
问号参数:
>>> r.keys() [b'newname', b'addr', b'add', b'ax', b'id', b'axxx', b'age'] >>> r.keys(pattern='a?') # 返回两个字母的以a开头的键名 [b'ax'] >>>
1.delete
该命令用于在 key 存在时删除 key,删除成功返回1,失败返回0.
>>> r.keys() [b'test', b'newname', b'addr', b'id', b'age'] >>> r.delete('test') 1 >>> r.delete('foo') 0 >>> r.keys() [b'newname', b'addr', b'id', b'age'] >>>
2.exists
测试 key 是否存在,存在返回True, 否则返回False。
>>> r.keys() [b'newname', b'addr', b'id', b'age'] >>> r.exists('foo') False >>> r.exists('id') True >>>
3.dump
序列化给定 key ,如果key存在则返回序列化后的值,否则返回None。
>>> r.keys() [b'newname', b'addr', b'add', b'id', b'age', b'score'] >>> r.dump('foo') >>> r.dump('score') b'\x00\xc0Z\x07\x00\xe6\x8c\xcdc\xa9,\x8c\xbc' >>>
4. expire
设置key过期时间, 单位为秒;设置成功返回True,失败返回False。
>>> import time >>> r.keys() [b'newname', b'addr', b'add', b'id', b'age', b'score'] >>> r.expire('score', 10) True >>> time.sleep(10) >>> r.keys() [b'newname', b'addr', b'add', b'id', b'age'] >>>
5.expireat
expireat 的作用和 expire 类似,都用于为 key 设置过期时间。 不同在于expireat 命令接受的时间参数是 时间戳或者datetime。
参数为datetime:
>>> import datetime >>> r.keys() [b'newname', b'addr', b'add', b'id', b'age'] >>> t = datetime.datetime(2017, 5, 27, 20, 21, 0, 0) >>> r.expireat('age', t) True >>> datetime.datetime.now() datetime.datetime(2017, 5, 27, 20, 22, 13, 854846) >>> r.keys() [b'newname', b'addr', b'add', b'id'] >>>参数为时间戳:
>>> import time >>> r.keys() [b'newname', b'addr', b'add', b'id', b'age'] >>> t = int(time.time()) >>> t = t + 20 >>> r.expireat('age', t) True >>> time.sleep(20) >>> r.keys() [b'newname', b'addr', b'add', b'id'] >>>
6.pexpire
设置 key 的过期时间单位为毫秒。
使用参考expire。
7.pexpireat
设置 key 过期时间,参数为毫秒时间戳或者datetime。
参数为datetime:
>>> import datetime >>> r.keys() [b'newname', b'addr', b'add', b'id', b'age'] >>> t = datetime.datetime(2017, 5, 27, 20, 53, 0, 0) >>> r.pexpireat('age', t) 1 >>> datetime.datetime.now() datetime.datetime(2017, 5, 27, 20, 56, 0, 417900) >>> r.keys() [b'newname', b'addr', b'add', b'id'] >>>参数为时间戳:
>>> import time >>> r.keys() [b'newname', b'addr', b'add', b'id', b'age'] >>> t = time.time() >>> t = t + 20 # 20秒后无效 >>> t = int(t * 1000) # 转换为毫秒 >>> r.pexpireat('age', t) 1 >>> time.sleep(20) >>> r.keys() [b'newname', b'addr', b'add', b'id'] >>>
8.move
将当前数据库的 key 移动到给定的数据库 db 当中。
9.persist
移除 key 的过期时间,key 将持久保持。
>>> import time >>> r.keys() [b'newax', b'newname', b'addr', b'add', b'age', b'axxx'] >>> r.expire('age', 10) True >>> r.persist('age') True >>> time.sleep(10) >>> r.keys() [b'newax', b'newname', b'addr', b'add', b'age', b'axxx'] >>>
10. pttl
以毫秒为单位返回 key 的剩余的过期时间。
>>> r.keys() [b'newax', b'newname', b'addr', b'add', b'axxx', b'age'] >>> r.expire('age', 100) True >>> r.pttl('age') 94170 >>>
11.ttl
以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。
>>> r.keys() [b'newax', b'newname', b'addr', b'add', b'axxx', b'age'] >>> r.expire('age', 100) True >>> r.ttl('age') 89 >>>
12.randomkey
从当前数据库中随机返回一个 key 。
>>> r.keys() [b'newax', b'newname', b'addr', b'add', b'axxx', b'age'] >>> r.randomkey() b'newname' >>>
13. rename(src, dst)
把键名src修改为dst,如果dst键已经存在了,修改后dst的值会变成src的值,原来的dst的值会丢失。
>>> r.keys() [b'newname', b'addr', b'add', b'ax', b'id', b'axxx', b'age'] >>> r.rename('id', 'newid') True >>> r.keys() [b'newname', b'addr', b'add', b'ax', b'newid', b'axxx', b'age'] >>>
14.renamenx(src, dst)
仅当 dst不存在时,将 src 改名为dst,否则不修改。
>>> r.keys() [b'newname', b'addr', b'add', b'ax', b'axxx', b'age'] >>> r.renamenx('ax', 'add') # add键已经存在了,修改失败返回False False >>> r.keys() [b'newname', b'addr', b'add', b'ax', b'axxx', b'age'] >>> r.renamenx('ax', 'newax') # newax键不存在,修改成功 True >>> r.keys() [b'newax', b'newname', b'addr', b'add', b'axxx', b'age'] >>>
15.type
返回 key 所储存的值的类型。
>>> r.keys() [b'newname', b'addr', b'add', b'ax', b'id', b'axxx', b'age'] >>> r.type('age') b'string' >>>