【Python redis】
"下载:pip install redis
@
基本用法
redis库提供两个类,Redis和StrictRedis,用于实现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对应的列表的某一个值前或后插入一个新值.
·
参数:
nameredis的name
whereBEFORE或AFTER
refvalue标杆值,即:在它前后插入数据
value要插入的数据
lrem(name, value, num)
·
在name对应的list中删除指定的值
·
参数:
nameredis的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】的更多相关文章
- 【Python数据分析】Python3多线程并发网络爬虫-以豆瓣图书Top250为例
基于上两篇文章的工作 [Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 [Python数据分析]Python3操作Excel(二) 一些问题的解决与优化 已经正确地实现 ...
- 【Python数据分析】Python3操作Excel(二) 一些问题的解决与优化
继上一篇[Python数据分析]Python3操作Excel-以豆瓣图书Top250为例 对豆瓣图书Top250进行爬取以后,鉴于还有一些问题没有解决,所以进行了进一步的交流讨论,这期间得到了一只尼玛 ...
- 利用Dnspod api批量更新添加DNS解析【python脚本】 - 推酷
利用Dnspod api批量更新添加DNS解析[python脚本] - 推酷 undefined
- 【python进阶】详解元类及其应用2
前言 在上一篇文章[python进阶]详解元类及其应用1中,我们提到了关于元类的一些前置知识,介绍了类对象,动态创建类,使用type创建类,这一节我们将继续接着上文来讲~~~ 5.使⽤type创建带有 ...
- 【python进阶】Garbage collection垃圾回收2
前言 在上一篇文章[python进阶]Garbage collection垃圾回收1,我们讲述了Garbage collection(GC垃圾回收),画说Ruby与Python垃圾回收,Python中 ...
- 【python进阶】深入理解系统进程2
前言 在上一篇[python进阶]深入理解系统进程1中,我们讲述了多任务的一些概念,多进程的创建,fork等一些问题,这一节我们继续接着讲述系统进程的一些方法及注意点 multiprocessing ...
- 【python图像处理】图像的缩放、旋转与翻转
[python图像处理]图像的缩放.旋转与翻转 图像的几何变换,如缩放.旋转和翻转等,在图像处理中扮演着重要的角色,python中的Image类分别提供了这些操作的接口函数,下面进行逐一介绍. 1.图 ...
- 【Python 开发】Python目录
目录: [Python开发]第一篇:计算机基础 [Python 开发]第二篇 :Python安装 [Python 开发]第三篇:python 实用小工具
- 【Python教程】《零基础入门学习Python》(小甲鱼)
[Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609
随机推荐
- print不是函数
对文章阅读有感!!! 文章地址:http://www.laruence.com/2019/03/01/4904.html print是一个语法结构(language constructs), 他并不是 ...
- js监听页面copy事件添加版权信息
个人博客 地址:http://www.wenhaofan.com/article/20180921103346 1.介绍 当页面需要做版权保护时,比如当用户copy我们网站的文章时,我们会希望在他co ...
- Oracle 12c中CDB与PDB实例参数更改影响实验
基础知识单薄的同学,请逐字逐句阅读以下概念,来自于博客园AskScuti. 预备知识:什么是参数文件.存放位置.参数文件的分类和参数文件的命名方式.参数文件如何创建.参数文件加载顺序.参数分类.参数修 ...
- Docker学习(六)Dockerfile构建自定义镜像
Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...
- linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦
linux centos7环境下安装apache2.4+php5.6+mysql5.6 安装及踩坑集锦(一) 一.Linux下安装MySQL 1.下载 下载地址:http://dev.mysql.co ...
- mybatis一对多 多对一 多对多
https://blog.csdn.net/AdminGuan/article/details/98952484 Mybatis的Mapper该如何编写多对一? 很简单,就是在resultMap标 ...
- selenium 百度登录
private String baseUrl="http://www.baidu.com/"; --------- @Test public void testLoginB() t ...
- 网易云信Duilib开发实践和Windows应用界面开发框架源码开源介绍
序言 Duilib介绍 Duilib是windows平台下的一款轻量级directUI开源库(遵循BSD协议),完全免费,可用于商业软件开发,只需在软件包里附上协议文件即可.Duilib可以简单方便地 ...
- AD转换器的主要技术指标
1)分辩率(Resolution) 指数字量变化一个最小量时模拟信号的变化量,定义为满刻度与2n的比值.分辩率又称精度,通常以数字信号的位数来表示. 2) 转换速率(Conversion Ra ...
- 【metasploit教程】之建立数据库
在我们通过search命令搜索时,我们会发现搜索的很慢(慢搜索)而且会报错: 启动postgresql: service postgresql strart 启动metasploit会开始建立数据表: ...