1,安装
pip install redis
2,基本使用使用:
import redis
r = redis.Redis(host=’localhost’, port=6379, db=0)
r['test'] = ‘test’ #或者可以r.set(‘test’, ‘test’) 设置keyr.get(‘test’) #获取test的值
r.delete(‘test’) #删除这个key
r.flushdb() #清空数据库
r.keys() #列出所有key
r.exists(‘test’) #检测这个key是否存在
r.dbsize() #数据库中多少个条数
>>> import redis >>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0) >>> r = redis.StrictRedis(connection_pool = pool) >>> r.set('foo', 'bar') True >>> r.get('foo') 'bar' 3.API参考Redis官方文档详细解释了每个命令( http://redis.io/commands )。 redis-py提供了两个实现这些命令的客户端类。 StrictRedis类试图遵守官方的命令语法,但也有几点例外:
SELECT:没有实现。参见下面 “线程安全 ”部分的解释。
DEL: ’del’是 python语法的保留关键字。因此 redis-py使用 “delete”代替。
CONFIG GET|SET:分别用 config_get和 config_set实现。
MULTI/EXEC:作为 Pipeline类的一部分来实现。若在调用 pipeline方法时指定 use_transaction=True,在执行 pipeline时会用 MULTI和 EXEC封装 pipeline的操作。参见下面 Pipeline部分。
SUBSCRIBE/LISTEN:和 pipeline类似,由于需要下层的连接保持状态, PubSub也实现成单独的类。调用 Redis客户端的 pubsub方法返回一个 PubSub的实例,通过这个实例可以订阅频道或侦听消息。两个类( StrictRedis和 PubSub类)都可以发布 (PUBLISH)消息。
除了上面的改变, StrictRedis的子类 Redis,提供了对旧版本 redis-py的兼容:
LREM:参数 ‘num’和 ‘value’的顺序交换了一下,这样 ‘num’可以提供缺省值 0.
ZADD:实现时 score和 value的顺序不小心弄反了,后来有人用了,就这样了
SETEX: time和 value的顺序反了
注:最好不要用 Redis,这个类只是做兼容用的
4.详细说明 4.1 连接池在后台, redis-py采用了连接池( ConnectionPool)来管理对 Redis服务器的连接。缺省情况下,每个 Redis实例都创建自己的连接池。也可以采用向 Redis类的 connection_pool参数传递已创建的连接池的方式。通过这种方式,可以实现客户端分片或精确控制连接的管理 :
>>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0) >>> r = redis.StrictRedis(connection_pool=pool) 4.2 连接ConnectionPool管理一组 Connection实例。 redis-py提供两种类型的 Connection。缺省情况下, Connection是一个普通的 TCP连接。 UnixDomainSocketConnection允许和服务器运行在同一个设备上的客户端通过 unix套接字进行连接。要使用 UnixDomainSocketConnection连接 ,只需要通过 unix_socket_path参数传递一个 unix套接字文件的字符串。另外,确保 redis.conf文件配置了 unixsocket参数(缺省情况下是注释掉的) :
>>> r = redis.StrictRedis(unix_socket_path='/tmp/redis.sock')也可以自己创建 Connection子类。这个特性可以在使用异步框架时用于控制 socket的行为。要使用自己的 Connection初始化客户端类,需要创建一个连接池,通 connection_class参数把自己的类传递进去。传递的其它关键字参数会在初始化时传递给自定义的类 :
>>> pool = redis.ConnectionPool(connection_class=YourConnectionClass, your_arg='...', ...) 4.3 分析器分析类提供了控制如何对 Redis服务器的响应进行分析的途径。 redis-py提供了两个分析类, PythonParser和 HiredisParser。缺省情况下,如果安装了 hiredis模块, redis-py会尝试使用 HiredisParser,否则使用 PythonParser。
Hiredis是由 Redis核心团队维护的 C库。 Pieter Noordhuis创建了 Python的实现。分析 Redis服务器的响应时, Hiredis可以提供 10倍的速度提升。性能提升在获取大量数据时优为明显,比如 LRANGE和 SMEMBERS操作。
和 redis-py一样, Hiredis在 Pypi中就有,可以通过 pip或 easy_install安装 :
$ pip install hiredis或 :
$ easy_install hiredis 4.4 响应回调函数客户端类使用一系列回调函数来把 Redis响应转换成合适的 Python类型。有些回调函数在 Redis客户端类的字典 RESPONSE_CALLBACKS中定义。
通过 set_response_callback方法可以把自定义的回调函数添加到单个实例。这个方法接