redis 模块操作剩余其他常用操作
delete(*names):删除任意的数据类型
exists(name):检测redis的name是否存在
keys(pattern='*'):根据模型获取redis的name
keys * 匹配数据库中所有Key
keys h?llo:匹配hello,hallo,hxllo等
expire(name,time):为redis的某个name设置超时时间
rename(src,dst):对redis的name重命名
move(name,db):将redis的某个值移动到指定的db下
randomkey():随机获取一个redis的name(不删除)
type(name):获取name对应的类型
scan(cursor=0, match=None, count=None)
scan_iter(match=None, count=None)
# 同字符串操作,用于增量迭代获取key
管道
redis-py默认在执行每次请求都会创建(连接池申请链接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求执行多个命令,并且默认情况下一次pipline是原子性操作。
实例
1 import redis 2 pool = redis.Connection(host='10.10.2.12',port=6379,db=5) # 可以设置存储使用的db,默认是0 3 r = redis.Redis(connection_pool=pool) 4 pipe = r.pipeline(transaction=True) # 启动管道 5 pipe.set('name','jack') # 写数据 6 pipe.set('age',20) 7 pipe.execute() # 启动执行
订阅/发布举例:
主程序类:
1 import redis 2 class RedisHelper(object): 3 def __init__(self): 4 self.__conn = redis.Redis(host='10.10.2.14',port=6379) 5 self.chan_sub = 'fm104.5' 6 self.chan_pub = 'fm104.5' 7 def public(self,msg): # 发布 8 self.__conn.publish(self.chan_pub,msg) # 向chan_pub的频道发Msg消息,publish是redis的方法 9 return True 10 def subscribe(self): # 订阅 11 pub = self.__conn.pubsub() # 开始订阅==打开收音机 12 pub.subscribe(self.chan_sub) # 选择频道为fm104.5 13 pub.parse_response() # 准备接收,启动程序里再次调用parse_response才进入接收 14 return pub
订阅:
1 from redis_helper import RedisHelper 2 obj = RedisHelper() 3 redis_sub = obj.subscribe() # 进入准备接收状态 4 while True: 5 msg = redis_sub.parse_response() # 这里再次调用parse_response进入接收状态 6 print(msg)
发布:
1 from redis_helper import RedisHelper 2 obj = RedisHelper() 3 obj.public('hello') # 发送消息hello