笔记-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模块中的函数名一致

笔记-python-redis接口的更多相关文章

  1. Python开发【笔记】:接口

    接口 什么是接口 ? 接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由 类B去实现其中的某个功能或全部 ...

  2. 笔记-python操作mysql

    笔记-python操作mysql 1.      开始 1.1.    环境准备-mysql create database db_python; use db_python; create tabl ...

  3. 笔记-python -asynio

    笔记-python -asynio 1.      简介 asyncio是做什么的? asyncio is a library to write concurrent code using the a ...

  4. python之接口自动化测试框架

    梳理python+unittest接口自动化测试框架的思路: 1.确定目录: cases:存放测试用例的py文件:config:存放一些数据库,环境地址等固定不变的信息: core:核心的文件, ca ...

  5. MongoDB学习笔记:Python 操作MongoDB

    MongoDB学习笔记:Python 操作MongoDB   Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...

  6. python+redis测试环境搭建

    针对windows操作系统. redis安装: 微软操作系统下,需下载github下面的开源项目,redis网站地址可以找到,直接解压即可. cmd到指定目录,输入下方命令,启动redis服务. re ...

  7. python+request接口自动化框架

    python+request接口自动化框架搭建 1.数据准备2.用python获取Excel文件中测试用例数据3.通过requests测试接口4.根据接口返回的code值和Excel对比 但本章只讲整 ...

  8. ledisdb:支持类redis接口的嵌入式nosql

    ledisdb现在可以支持嵌入式使用.你可以将其作为一个独立的lib(类似leveldb)直接嵌入到你自己的应用中去,而无需在启动单独的服务. ledisdb提供的API仍然类似redis接口.首先, ...

  9. python版接口自动化测试框架源码完整版(requests + unittest)

    python版接口自动化测试框架:https://gitee.com/UncleYong/my_rf [框架目录结构介绍] bin: 可执行文件,程序入口 conf: 配置文件 core: 核心文件 ...

  10. python编写接口初识一

    python编写接口这里用到的是他一个比较轻量级的框架 flask #!/usr/bin/python # -*- coding: UTF-8 -*- import flask,json server ...

随机推荐

  1. 开启win7笔记本自带无线功能

    在cmd中输入以下命令: netsh wlan set hostednetwork mode=allow /disallow netsh wlan set hostednetwork ssid=Myw ...

  2. java.lang.OutOfMemoryError: Failed to allocate a 3110419 byte allocation with 741152 free bytes and

    在进行SurfaceView的开发时,出现了java.lang.OutOfMemoryError错误: 由于项目是同时显示四路远端传输过来的视频 所以采用的方法是使用:android:hardware ...

  3. android listview 加载遇到的问题

    http://blog.csdn.net/l_serein/article/details/7706338 转载: 描述一下场景: 菜单栏上有若干分类,点击每一个分类,ListView下分根据分类显示 ...

  4. JavaScript平台Platypi悄然登场

    几个月前,一个新的JavaScript平台Platypi悄然诞生.它为开发者提供的不仅仅是一套标准的MVC框架而已,由于它是基于TypeScript构建的,因此对开发者而言在熟悉之中透露出与众不同的感 ...

  5. mybase修改内部文件免费使用

    关于mybase的介绍就不多说了,下载后一般只有30天的使用期限.以下方法可以无限次使用该软件(当然,每隔一个周期就需要修改myBase.ini) 原文博客详见:https://www.cnblogs ...

  6. CentOS7下SSH服务学习笔记

    测试环境: [root@nmserver-7 ~]# uname -aLinux nmserver-7.test.com 3.10.0-514.el7.centos.plus.i686 #1 SMP ...

  7. java研发常见问题总结2

    1. String.StringBuffer与StringBuilder之间区别 关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 ...

  8. 【转载】#370 - Subscribe to an Event by Adding an Event Handle

    You subscribe to a particular event in C# by defining an event handler-code that will be called when ...

  9. Linux MySQL单实例源码编译安装5.6

    cmake软件 tar -zxvf cmake-2.8.11.2.tar.gz cd cmake-2.8.11.2 ./bootstrap make make install cd ../   依赖包 ...

  10. vuejs组件参数校验

    父组件向子组件传递一些参数,那么子组件有权对这些参数进行一个校验,这个就是组件参数校验 需求:父组件传递过来的必须是个字符串,这个要怎么去校验呢 <div id='root'> <c ...