笔记-python-redis接口

笔记-python-redis接口

 

1.      python 与redis接口

redis是redis数据库的python接口包,为python提供的redis的调用接口。

注:文档内容主要基于https://pypi.org/project/redis/,使用包版本为2.10.6.

1.1.    安装redis接口包

安装

pip3 install redis

import redis

 

2.      API

Redis 官方文档详细解释了每个命令,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-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。

注:最好不要用 Redis,这个类只是做兼容用的

 

2.1.    连接池

为了节省资源,减少多次连接损耗,连接池的作用相当于总揽多个客户端与服务端的连接,当新客户端需要连接时,只需要到连接池获取一个连接即可,实际上只是一个连接共享给多个客户端。默认情况下每个连接会创建一个连接池,但可以自行指定。

示例代码:

import redis

pool= redis.ConnectionPool(host='localhost',port=6379,decode_responses=True)

r=redis.Redis(connection_pool=pool)

r2=redis.Redis(connection_pool=pool)

r.set('apple','a')

print(r.get('apple'))

r2.set('banana','b')

print(r.get('banana'))

 

print(r.client_list())

print(r2.client_list())#可以看出两个连接的id是一致的,说明是一个客户端连接

 

2.2.  连接模式:

连接池管理连接实例的集合,redis-py支持两种类型的连接。默认的连接方式是一个基于套接字的TCP连接。UnixDomainSocketConnection允许在sever服务器上使用unix domain socket连接数据库。使用UnixDomainSocketConnection,需要unix_socket_path参数,它是一个字符串。另外使用前需要在redis.conf文件中定义unixsocket,默认情况下是禁用的。

r = redis.Redis(unix_socket_path=’/tmp/redis/sock’)

这样可以创建连接自己的连接子类,一般用于在异步编程时控制套接字的行为。

要使用自建的连接实例,需要创建一个连接池,并把自建类传递给connection_class参数。

pool = redis.ConnectionPool(connection_class=YourConnectionClass,

                                your_arg='...', ...)

 

2.3.    解析器

解析类用于解析redis服务器返回的数据。redis-py提供了两个解析类,the PythonParser and the HiredisParser.

默认情况下,redis-py will attempt to use the HiredisParser if you have the hiredis module installed and will fallback to the PythonParser otherwise.

Hiredis是由Redis核心团队维护的C库。使用Hiredis可以在解析Redis服务器的响应时提速10倍。

Hiredis已发布到PyPI,可以通过pip或easy_install安装:

pip install hiredis或者easy_install hiredis

 

3.      操作

操作:

值的设置和获取,可以参考redis的命令,redis模块中的对应功能的函数名基本与redis中的一致

【注意默认情况下,设置的值或取得的值都为bytes类型,如果想改为str类型,需要在连接时添加上decode_responses=True】

设置值:

redis中set()  ==>r.set()

redis中setnx()  ==>r.set()

redis中setex() ==>r.setex()

redis中setbit()  ==>r.setbit()

redis中mset()  == > r.mset()

redis中hset()  ==>r.hset()

redis中sadd() == >r.sadd()

其他。。。基本redis的命令名与redis模块中的函数名一致

获取:

redis中get() ==》r.get()

redis中mget() ==》r.mget()

redis中getset() ==》r.getset()

redis中getrange() ==》r.getrange()

其他。。。基本redis的命令名与redis模块中的函数名一致

 

转载于:https://www.cnblogs.com/wodeboke-y/p/9811766.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值