"下载:pip install redis

@


基本用法

redis库提供两个类,RedisStrictRedis,用于实现Redis的命令.

StrictRedis用于实现大部分的官方命令,并使用官方的语法和命令.

Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py.

Redis连接实例是线程安全的,可以直接将redis连接实例设置为一个全局变量,直接使用.

如果需要另一个Redis实例(or Redis数据库)时,就需要重新创建redis连接实例来获取一个新的连接.

连接redis,加上参数decode_responses=True时,写入的键值对中value为字符串类型,否则为字节类型.

基本操作

from redis import Redis

# 建立一个连接实例
conn = Redis(host='localhost', port=6379, password='', decode_responses=True) # ========= set 与 get (String类型)========= conn.set('name', '01')
ret01 = conn.get('name') # 01 # ========= hset 与 hget (Hash类型)========= info = 'info'
conn.hset(info, 'k1', 'v1')
conn.hset(info, 'k2', 'v2')
ret02 = conn.hget('info', 'k1') # v1 # ========= hmset 与 hgetall (Hash类型)========= conn.hmset('data', {'k1': 'v1', 'k2': 'v2'})
conn.hmset('data', {'k3': 'v3', 'k4': 'v4'})
ret03 = conn.hgetall('data') # {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'k4': 'v4'}

连接池

使用ConnectionPool来管理对于一个redis服务器的所有连接,可避免每次连接时都要建立、释放连接的开销.

默认,每个Redis实例都会维护一个自己的连接池.

可以直接建立一个连接池,然后作为参数传给Redis实例,这样便可实现多个Redis实例共享一个连接池.

import redis

# 建立连接池
POOL = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) # 创建两个Redis实例,共用一个连接池
conn01 = redis.Redis(connection_pool=POOL)
conn02 = redis.Redis(connection_pool=POOL) conn01.set('name', 'n1')
conn02.set('name', 'n2')
# ... print(conn01.get('name')) # 此时的key值为:n2

基本命令

在Redis中设置值,默认不存在则创建,存在则修改.

delete(*['k1', 'k2']) 指定key删除

flushdb () 清空当前库中的所有key

flushall() 清空整个 Redis 服务器的数据

·

模糊查询

keys('k*') 查所有以'k'开头的key

String

set(name, value, ex=None, px=None, nx=False, xx=False)

参数

·

ex 过期时间(秒),过期后值为None

px 过期时间(毫秒)

nx 如果设置为True,则只有name不存在时,当前set操作才会执行

xx 如果设置为True,则只有name存在时,当前set操作才会执行

操作

·

get(key):获取key的值.

mset(*args, **kwargs):批量设置值(例:mset({'k1': 'v1', 'k2': 'v2'}))

mget(key, *args):批量获取值(例:mget('k1', 'k2'))

详见runoob.

Hash

hset(name, key, value) 增加单个,不存在则创建

·

hget(name, key) 获取单个

·

hmset(name, mapping) 批量增加,mapping为字典

·

hgetall(name) 获取name对应hash的所有键值对

·

hlen(name) 获取name对应的hash中键值对的个数

·

hkeys(name) 获取name对应的hash中所有的key的值

·

hvals(name) 获取name对应的hash中所有的value的值

·

hexists(name, key) 检查name对应的hash是否存在当前传入的key

·

hdel(name, *keys) 将name对应的hash中指定的key的键值对删除

hscan_iter(self, name, match=None, count=None)

·

返回一个迭代器,list后类型为:[ ('k1', 'v2'), ('k2', 'v2'), (...)].

利用yield封装hscan创建的生成器,实现分批去redis中获取数据

·

参数:

match 匹配指定key,默认None表示所有的key.

count 每次分片最少获取的个数,默认None表示采用Redis的默认分片个数.

List

lpush(name, values) 在name对应的list中左边添加元素,没有就新建

·

llen(name) 获取name对应的列表长度

·

lrang(name, index1, index2) 按照index切片取出name对应列表里的值

·

lpushx(name, value) 只能添加不能新建

·

lset(name, index, value) 给指定索引修改值

·

index(name, index) 在name对应的列表中根据索引获取列表元素剩下的集合以及有序集合的命令.

linsert(name, where, revalue, value)

·

在name对应的列表的某一个值前或后插入一个新值.

·

参数:

name redis的name

where BEFORE或AFTER

refvalue 标杆值,即:在它前后插入数据

value 要插入的数据

lrem(name, value, num)

·

在name对应的list中删除指定的值

·

参数:

name redis的name

value 要删除的值

num:解释如下

num=0时,删除列表中所有的指定值

num=1时,从前到后,删除左边第1个

num=2时,从前到后,删除2个

num=-2时,从后向前,删除2个

set

sadd('k', 'v') 将一个活多个'v'添加到'k'中,'k'不存在时自动创建,'v'存在时忽略

·

scard('k') 统计'k'中有多少个成员

·

sinter('k') 查'k'中的所有成员

·

smembers('k') 查'k'中的所有成员

·

sismember('k', 'v') 判断'v'是否是'k'中的成员

sismember

"

【Python redis】的更多相关文章

  1. 【Python数据分析】Python3多线程并发网络爬虫-以豆瓣图书Top250为例

    基于上两篇文章的工作 [Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 [Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 已经正确地实现 ...

  2. 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化

    继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...

  3. 利用Dnspod api批量更新添加DNS解析【python脚本】 - 推酷

    利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined

  4. 【python进阶】详解元类及其应用2

    前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...

  5. 【python进阶】Garbage collection垃圾回收2

    前言 在上一篇文章[python进阶]Garbage collection垃圾回收1,我们讲述了Garbage collection(GC垃圾回收),画说Ruby与Python垃圾回收,Python中 ...

  6. 【python进阶】深入理解系统进程2

    前言 在上一篇[python进阶]深入理解系统进程1中,我们讲述了多任务的一些概念,多进程的创建,fork等一些问题,这一节我们继续接着讲述系统进程的一些方法及注意点 multiprocessing ...

  7. 【python图像处理】图像的缩放、旋转与翻转

    [python图像处理]图像的缩放.旋转与翻转 图像的几何变换,如缩放.旋转和翻转等,在图像处理中扮演着重要的角色,python中的Image类分别提供了这些操作的接口函数,下面进行逐一介绍. 1.图 ...

  8. 【Python 开发】Python目录

    目录: [Python开发]第一篇:计算机基础 [Python 开发]第二篇 :Python安装 [Python 开发]第三篇:python 实用小工具

  9. 【Python教程】《零基础入门学习Python》(小甲鱼)

    [Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609

随机推荐

  1. linux 安装 Django

    安装django的命令 pip install Django ## 这样运行默认安装的是最新版 备注 根据测试在python3.4基础上安装Django 1.8.9正式版是没有问题的,所以要执行下面命 ...

  2. python多项式拟合:np.polyfit 和 np.polyld

    python数据拟合主要可采用numpy库,库的安装可直接用pip install numpy等. 1. 原始数据:假如要拟合的数据yyy来自sin函数,np.sin import numpy as ...

  3. python3函数的参数

    函数的定义能简化代码的逻辑,对于函数的调用者来说,只需要知道如何正确的传递参数,以及知道函数将返回什么值就可以了,而函数内部的复杂逻辑被封装起来,调用者不必了解. 位置参数 调用函数时,传入实参的值按 ...

  4. go语言 实现对称加密解密算法

    package main import ( "bytes" "crypto/aes" "crypto/cipher" "crypt ...

  5. vector 牛逼 +lower_bound+ upper_bound

    vector 超级 日白 解决的问题空间问题,可以自由伸缩. 一下用法: 向量大小: vec.size(); 向量判空: vec.empty(); 末尾添加元素: vec.push_back(); / ...

  6. [HEOI2015] 小Z的房间 - 矩阵树定理

    #include <bits/stdc++.h> using namespace std; #define int long long const int N = 105; const i ...

  7. XMLHttpRequest: 网络错误 0x2ee4, 由于出现错误 00002ee4 而导致此项操作无法完成

    原因: IE11有默认设置安全策略,如果url需要证书,一发送请求IE11就会拒绝,因为ssl certificate(SSL证书) 是非法的 解决方案: (1)修改IE浏览器配置 - 用户使用的电脑 ...

  8. 未能加载文件或程序集“Autofac.Integration.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=17863af14b0044da”或它的某一个依赖项。找到的程序集清单定义与程序集引用不匹配。 (异常来自 HRESULT:0x80131040)

    是因为web.config中dependentAssembly结点下的版本号和当前引用的程序集的版本号不一致!

  9. 【sql】sql必知必会_02

    chapter10 - 常用的sql标准有哪些,在SQL92中是如何使用连接的? sql两个主要的标准sql92.sql95: sql92中的五种连接方式: a.笛卡尔积:是一个数学运算,两个集合X和 ...

  10. 题解【UVA12097】Pie

    题目描述 输入格式 输出格式 输入输出样例 输入样例#1 3 3 3 4 3 3 1 24 5 10 5 1 4 2 3 4 5 6 5 4 2 输出样例#1 25.1327 3.1416 50.26 ...