Python_与redis数据库交互

目录

redis模块的使用

连接方式

连接池

操作

设置值

获取值

管道

事务

源码等资料获取方法


python可以使用redis模块来跟redis交互

redis模块的使用

安装模块: pip3 install redis

导入模块:import redis

连接方式

  • 严格连接模式:r=redis.StrictRedis(host="",port=)
  • 更Python化的连接模式:r=redis.Redis(host="",port=)
  • StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令
  • Redis与StrictRedis的区别是:Redis是StrictRedis的子类,用于向前兼容旧版本的redis-py,并且这个连接方式是更加"python化"的

连接池

使用connection pool来管理对一个redis server的所有连接,可以减少每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池

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是一致的,说明是一个客户端连接

操作

值的设置和获取,可以参考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模块中的函数名一致

import redis
r=redis.Redis(host='localhost',port=6379,decode_responses=True)
# r=redis.StrictRedis(host='localhost',port=6379)

r.set('key','value')
value=r.get('key')
# print(type(value))
print(value)
r.hset('info','name','lilei')
r.hset('info','age','18')
print(r.hgetall('info'))
r.sadd('course','math','english','chinese')
print(r.smembers('course'))

管道

一般情况下,执行一条命令后必须等待结果才能输入下一次命令,管道用于在一次请求中执行多个命令。

参数介绍:

  • transaction:指示是否所有的命令应该以原子方式执行。
import redis,time

r=redis.Redis(host="localhost",port=6379,decode_responses=True)

pipe=r.pipeline(transaction=True)

pipe.set('p1','v2')
pipe.set('p2','v3')
pipe.set('p3','v4')
time.sleep(5)
pipe.execute()

事务

python中可以使用管道来代替事务:

  • 补充:监视watch:pipe.watch()
import redis,time
import redis.exceptions
r=redis.Redis(host='localhost',port=6379,decode_responses=True)
pipe=r.pipeline()
print(r.get('a'))


try:
    # pipe.watch('a')
    pipe.multi()
    pipe.set('here', 'there')
    pipe.set('here1', 'there1')
    pipe.set('here2', 'there2')
    time.sleep(5)
    pipe.execute()

except redis.exceptions.WatchError as e:
    print("Error")

源码等资料获取方法

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/37071.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

40.RocketMQ之高频面试题大全

消息中间件如何选型 RabbitMQ erlang开发,对消息堆积的支持并不好,当大量消息积压的时候,会导致 RabbitMQ 的性能急剧下降。每秒钟可以处理几万到十几万条消息。 RocketMQ java开发,面向互联网集群化功能丰富,对在线业…

Win10安全中心怎么关闭?Win10安全中心关闭方法

Win10安全中心怎么关闭?关闭Win10的安全中心可以帮助用户自定义系统的安全和防护设置,但有些用户不知道怎么操作才能关闭安全中心,首先用户需要打开Win10电脑的设置选项,接着打开安全中心,然后关掉安全中心的实时保护、…

SQL力扣练习(六)

目录 1. 部门工资前三高的所有员工(185) 题解一(dense_rank()窗口函数) 题解二(自定义函数) 2.删除重复的电子邮箱(196) 题解一 题解二(官方解析) 3.上升的温度(197) 解法一(DATEDIFF())…

非主流币波段策略

数量技术宅团队在CSDN学院推出了量化投资系列课程 欢迎有兴趣系统学习量化投资的同学,点击下方链接报名: 量化投资速成营(入门课程) Python股票量化投资 Python期货量化投资 Python数字货币量化投资 C语言CTP期货交易系统开…

探究Vue源码:mustache模板引擎(5) 对比rollup与webpack,在本地搭建webpack环境

好 从本文开始 我们就来手写一下mustache这个库 他是模板引擎的一个祖先 将模板字符串编译成一个dom字符串 就是它的思想,这也是一个具有跨时代意义的思想 这里的话 我们还是搭一个 webpack 的项目环境 这里值得一提的是 mustache 他官方是通过rollup来进行打包的 …

【Docker】Docker的部署含服务和应用、多租环境、Linux内核的详细介绍

前言 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介:热…

速通matplotlib库

速通matplotlib库 前言 ​ 最近在复习之前学习过的知识点,因此想到把学过的总结一下,方便后面再次复习,所以有了这个系列。 说明 ​ 由于标题写的是“速通”,因此我的想法是可以让大家看完这篇文章,可以上手matplotlib…

爬虫正常用哪种代理比较好?

目录 爬虫使用哪种代理IP 爬虫使用代理IP时需要考虑什么 爬虫怎么使用代理IP 爬虫使用代理IP示例代码 爬虫使用哪种代理IP 在使用代理IP进行爬虫时,以下几种类型的代理被认为是比较好的选择: 1. 高匿名代理:高匿名代理隐藏了真实的IP地址…

简要介绍 | 边缘计算:原理,研究现状与未来展望

注1:本文系“简要介绍”系列之一,仅从概念上对边缘计算进行非常简要的介绍,不适合用于深入和详细的了解。 边缘计算:原理,研究现状与未来展望 What is Edge Computing? | Moving Intelligence to the Edge 一、背景介…

漏刻有时数据可视化Echarts组件开发(27):端午地图粽情之你的家乡吃甜还是吃咸?

端午地图粽情之你的家乡吃甜还是吃咸? 前言Echarts创意来源Echarts核心代码1.引入外部文件2.构建HTML容器3.Echarts组件开发预置各省数据初始化DOM配置选项geo组件series组件自适应浏览器完整option选项配置代码 前言 中国各地对粽子的口味偏好存在一定的差异&…

【openGauss数据库】---设置开机自启动openGauss数据库服务

【openGauss数据库】---设置开机自启动openGauss数据库服务 🔻 一、openGauss 自定义服务的配置文件了解🔻 二、设置openGauss 开机自启动🔻 三、总结—温故知新 👈【上一篇】 💖The Begin💖 点点关注&am…

css animation 鼠标移入暂停会抖动

如图 实现一个赞助商横向滚动列表墙, 上下两排向右滚动,中间向左滚动,鼠标移入暂停当前行。 实现: // 使用animation.moving {animation: move 20s linear infinite; }keyframes move {0% {}100% {transform: translateX(-50%);…

【深入浅出 Spring Security(十三)】使用 JWT 进行前后端分离认证(附源码)

使用 JWT 进行前后端分离认证 一、JWT 的简单介绍二、使用 JWT 进行安全认证后端结合SpringSecurity实现前端Vue3结合Pinia、Axios实现测试结果 一、JWT 的简单介绍 JWT 全称 Java web Token,在此所讲述的是 JWT 用于身份认证,用服务器端生成的JWT去替代…

CV多模态和AIGC的原理解析:从CLIP、BLIP到Stable Diffusion、Midjourney

前言 终于开写本CV多模态系列的核心主题:stable diffusion相关的了,为何执着于想写这个stable diffusion呢,源于三点 去年stable diffusion和midjourney很火的时候,就想写,因为经常被刷屏,但那会时间错不…

入门车载以太网

前言 近些年来,随着为了让汽车更加安全、智能、环保等,一系列的高级辅助驾驶功能喷涌而出。未来满足这些需求,就对传统的电子电器架构带来了严峻的考验,需要越来越多的电子部件参与信息交互,导致对网络传输速率,稳定性,负载率等方面都提出了更为严格的挑战。 除此以外…

34.RocketMQ之Broker端消息存储流程详解

highlight: arduino-light Broker消息存储概要设计 RocketMQ主要存储的文件包括Commitlog文件,ConsumeQueue文件,IndexFile文件。 RMQ把所有主题的消息存储在同一个文件中,确保消息发送时顺序写文件。 为了提高消费效率引入了ConsumeQueue消息…

云原生TDengine-v3.0部署手册

云原生TDengine-v3.0部署手册 一、管理namespace1.1 创建namespace1.2 namespaces列表 二、配置3份yaml文件2.1 tdengine3-storage-class.yaml2.2 taosd-service.yaml2.3 taosd-tdengine.yaml 三、服务部署3.1 部署StorageClass3.2 部署Service3.3 部署StatefulSet3.4 查看启动…

Flask新手教程

Flask简介 Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。 Flask 可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或…

微服务 云原生:微服务相关技术简要概述

后端架构演进 单体架构 所谓单体架构,就是只有一台服务器,所有的系统、程序、服务、应用都安装在这一台服务器上。比如一个 bbs 系统,它用到的数据库,它需要存储的图片和文件等,统统都部署在同一台服务器上。 单体架…

有PMP有没有必要换cspm?未来的发展前景如何?

最近 CSPM 证书很热门,CSPM 相关问题大家都很关心,今天本橘座就给大家全面解答一下 CSPM到底是何方神圣? 文章主要是解答下面几个常见问题,其他问题可以留言或者私信咨询我哦~ 一、什么是 CSPM证书?跟PMP是什么关系&a…