笔记-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. 1像素border

    1像素border 利用伪类和媒体查询: 伪类: border-1px($color) position:relative &:after display: block position: a ...

  2. http-equiv和name的区别

    meta是用来在HTML文档中模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中,meta 标签的用处很多.meta 的属性有两种:name和 ...

  3. 工作流常使用API

    记录实际开发中常使用到的API CreateProcess 在工作流开始之前,创建一个新的工作流 Wf_engine.CreateProcess (itemtype in varchar2,    - ...

  4. azkaban调度

    azkaban调度 1.概述 azkaban是一套调度系统,常用大数据作业调度.azkaban包括web和executor两套程序,web主要完成展示和交互,executor上完成调度和作业提交执行. ...

  5. CentOS6下DHCP服务(一)工作原理及安装配置说明

    1.DHCP服务用途 DHCP是Dynamic Host Configuration Protocol的简写,DHCP服务器最主要的工作就是自动地将网络参数分配给网络中的每台计算机,让客户端的计算机在 ...

  6. mac 下使用 ikbcG87 及使用 karabiner 改大小写键

    前言 一直使用 mac ,对于机械键盘还处于刚入坑阶段,作为小白还是选择能够兼容 mac 的机械键盘,于是选择了 ikbcG87 "双子座" 1.使用 ikbc G87 mac 模 ...

  7. 使用browsermob代理出现错误java.lang.NoClassDefFoundError: org/littleshoot/proxy/HttpFiltersSource

    使用browsermob代理做埋点数据,maven配置的包如下 <dependency> <groupId>net.lightbody.bmp</groupId> ...

  8. 前端高质量知识(五)-JS详细图解全方位解读this

    在这之前,我们需要来回顾一下执行上下文. 在前面几篇文章中,我有好几个地方都提到执行上下文的生命周期,为了防止大家没有记住,再次来回顾一下,如下图. 执行上下文生命周期 在执行上下文的创建阶段,会分别 ...

  9. 最长公共单词,类似LCS,(POJ2250)

    题目链接:http://poj.org/problem?id=2250 解题报告: 1.状态转移方程: ; i<=len1; i++) { ; j<=len2; j++) { dp[i][ ...

  10. input的类型为number,限制输入的数字位数

    <input type="text"  maxlength="5" />   效果ok,当 <input type="number& ...