"下载: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. Python的特点

    简单易学. 免费开源. 跨平台. 解释性.不需要编译就可以直接运行,使用更加简单,移植性更强. 面向对象.arcgis也支持面向对象编程.

  2. 3-在Django中使用使用数据库

    数据库设置 在上一章节中学习了如何创建Django项目,在Django项目中创建web应用,以及如何在Django主程序的URL中引用web应用中的URL.下面来了解如何在Django中使用数据库.D ...

  3. arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc)

    arm-linux-gnueabihf-gcc下载 qt下载 arm-linux下qt + opencv开发环境的搭建(Altera DE1 Soc) Ubuntu 16.04 安装QT arm嵌入式 ...

  4. 无缘诺贝尔奖的George Dantzig——线性规划之父

    无缘诺贝尔奖的George Dantzig——线性规划之父 王军强,2012年11月2日 “线性规划之父”的George Dantzig,与“计算机之父”.“博弈论之父”John Von Neuman ...

  5. 汉语诗词 LaTeX 排版样式

    清世何须忧庙廊——汉语诗词 LaTeX 排版样式 作者想一些中国古典诗歌,发现大多数早期的例子都是为了英文诗而创作的环境. 下面是作者给出唐诗选集的布局实例. 它不是一般解决方案,而只是一个特定的例子 ...

  6. PP:Classification of Time-Series Images Using Deep Convolutional Neural Networks

    The 10th international conference on machine vision; C类 Methodology: 非主流方法 2 stages: 1. convert time ...

  7. how to activate XMind8 to pro version.

    From activate Xmind 8. in step 3: run ./setup.sh in sudo command, and use the following command to r ...

  8. C++-有感

    今日在图书馆待了差不多一天,我都忘了我吃饭了没,拿着看视频学习,没啦,主要还是看书,突然感觉有点写不动了. 明天开始不带电脑了,准备把数据结构书重新过一遍,算了,还是不用C++写了,感觉C++居然做题 ...

  9. stopPropagation() 方法

    定义和用法 不再派发事件. 终止事件在传播过程的捕获.目标处理或起泡阶段进一步传播.调用该方法后,该节点上处理该事件的处理程序将被调用,事件不再被分派到其他节点. 语法 event.stopPropa ...

  10. MSSQL 打开xp_cmdshell

    sp_configure reconfigure go sp_configure reconfigure go