常用操作和管道
一、常用操作
1.1 delete(*names)
# 根据删除redis中的任意数据类型 print(r.get('name')) r.delete('name') print(r.get('name')) # 输出 b'bigberg' None
1.2 exists(name)
# 检测redis的name是否存在 print(r.exists('name')) print(r.exists('names')) #输出 False True
1.3 keys(pattern='*')
# 根据模型获取redis的name # 更多: # KEYS * 匹配数据库中所有 key 。 # KEYS h?llo 匹配 hello , hallo 和 hxllo 等。 # KEYS h*llo 匹配 hllo 和 heeeeello 等。 # KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo print(r.keys(pattern='n*')) # 输出 [b'names', b'num', b'names_dst']
1.4 expire(name ,time)
# 为某个redis的某个name设置超时时间 print(r.get('num')) r.expire('num', 2) time.sleep(3) print(r.get('num')) #输出 b'6' None
1.5 rename(src, dst)
# 对redis的name重命名为 print(r.get('info')) r.rename('info', 'info-test') print(r.get('info-test')) #输出 b'this is my test' b'this is my test'
1.6 move(name, db))
# 将redis的某个值移动到指定的db下 r.move('info-test', 3) 127.0.0.1:6379> select 3 OK 127.0.0.1:6379[3]> keys * 1) "info-test"
1.7 randomkey()
# 随机获取一个redis的name(不删除) print(r.randomkey()) #输出 b'login_user'
1.8 type(name)
# 获取name对应值的类型 print(r.type('login_user')) #输出 b'string'
二、管道
redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。
#!/usr/bin/env python # -*- coding:utf-8 -*- import redis pool = redis.ConnectionPool(host='10.211.55.4', port=6379) r = redis.Redis(connection_pool=pool) # pipe = r.pipeline(transaction=False) pipe = r.pipeline(transaction=True) pipe.set('name', 'ddt') pipe.set('role', 'superboy') pipe.execute()