Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

python redis使用

$
0
0

1,安装

pip install redis

2,基本使用

使用:

import redis

r = redis.Redis(host=’localhost’, port=6379, db=0)

r['test'] = ‘test’ #或者可以r.set(‘test’, ‘test’) 设置key

r.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方法可以把自定义的回调函数添加到单个实例。这个方法接

Viewing all articles
Browse latest Browse all 9596

Trending Articles