python数据库——redis

一、 Redis数据库

Redis是一个开源的、基于内存的数据结构存储系统,可以用作数据库、缓存和消息中间件。它支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合等。Redis的特点包括高性能、持久化、支持事务和发布/订阅等功能。它通常被用于解决高并发、高性能读写的场景,如缓存、排行榜、实时统计等。

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库,与其他key-value缓存产品相比有以下区别:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

二、 redis-py库

        redis-py是一个Python语言的Redis客户端库,它提供了丰富的功能和易于使用的接口,使得开发人员可以轻松地与Redis服务器进行交互。Redis作为一个开源的内存数据存储系统,具有高性能、高可靠性和灵活的数据结构等特点,在各种场景下都有着广泛的应用。首先需要安装redis-py库,可以使用pip命令进行安装:

pip install redis

2.1 常用函数

  1. 连接相关函数:

    • redis.Redis(host='localhost', port=6379, db=0, password=None):创建一个Redis连接对象。
    • redis.StrictRedis(host='localhost', port=6379, db=0, password=None):创建一个严格模式的Redis连接对象。
  2. 数据操作函数:

    • set(key, value):设置一个键值对。
    • get(key):获取指定键的值。
    • delete(*keys):删除一个或多个键。
    • exists(key):判断指定键是否存在。
    • incr(key, amount=1):将指定键的值增加指定的数量。
    • decr(key, amount=1):将指定键的值减少指定的数量。
    • mset(mapping):同时设置多个键值对。
    • mget(keys):同时获取多个键的值。
    • hset(name, key, value):在指定的哈希表中设置一个字段的值。
    • hget(name, key):获取指定哈希表中指定字段的值。
    • hgetall(name):获取指定哈希表的所有字段和值。
    • sadd(name, *values):向指定的集合中添加一个或多个元素。
    • smembers(name):获取指定集合中的所有元素。
  3. 列表操作函数:

    • lpush(name, *values):向指定列表的左侧插入一个或多个元素。
    • rpush(name, *values):向指定列表的右侧插入一个或多个元素。
    • lpop(name):从指定列表的左侧弹出一个元素。
    • rpop(name):从指定列表的右侧弹出一个元素。
    • lrange(name, start, end):获取指定列表中指定范围内的元素。

三、数据库连接

以下是一个示例,展示了如何使用redis-py库连接到Redis数据库:

import redis# 创建Redis连接对象
r = redis.Redis(host='localhost', port=6379, db=0, password=None)# 设置键值对
r.set('key1', 'value1')# 获取键的值
value = r.get('key1')
print(value)  # 输出: b'value1'# 删除键
r.delete('key1')# 判断键是否存在
exists = r.exists('key1')
print(exists)  # 输出: False

        在示例中,首先创建了一个Redis连接对象,指定了Redis服务器的主机名、端口号和数据库索引。然后使用set函数设置了一个键值对,使用get函数获取了键的值,并使用delete函数删除了键。最后使用exists函数判断键是否存在。

注:示例中的hostport参数需要根据实际的Redis服务器配置进行修改。

四、数据操作和查询

下面是一个使用redis-py库进行数据操作和查询的示例:
 

import redis# 创建Redis连接
r = redis.Redis(host='localhost', port=6379, db=0)# 设置键值对
r.set('name', 'Alice')
r.set('age', 20)
r.set('score', 85.5)# 获取键的值
name = r.get('name')
age = r.get('age')
score = r.get('score')print(f"Name: {name.decode()}")
print(f"Age: {age.decode()}")
print(f"Score: {score.decode()}")# 对键进行增减操作
r.incrby('age', 2)  # 将age键的值增加2
r.decrby('score', 5)  # 将score键的值减少5# 获取所有键
keys = r.keys('*')
print(f"All Keys: {keys}")# 删除键
r.delete('score')# 检查键是否存在
exists = r.exists('score')
print(f"Key 'score' exists: {exists}")

        以上示例展示了如何使用redis-py库进行数据操作和查询。可以根据具体需求进行更复杂的操作,如设置过期时间、使用哈希表、使用列表等。请注意,示例中的连接参数(host、port、db)可能需要根据您的实际情况进行修改。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

字符串函数(二)—— 长度受限制的字符串函数

✨博客主页:小钱编程成长记 🎈博客专栏:进阶C语言 🎈相关博文:字符串函数(一) 字符串函数(二)—— 长度受限制的字符串函数 3.长度受限制的字符串函数3.1 strncpy&#x…

Redis配置和优化

Redis配置和优化 一 、Redis介绍二、关系数据库和非关系数据库2.1、关系型数据库2.2、 非关系型数据库2.3、 非关系型数据库的产生背景2.4、 关系型数据库和非关系型数据库区别2.5、 总结 三、缓存概念3.1、系统缓存3.2、 缓存保存位置及分层结构3.2.1、DNS缓存3.2.2、 应用层缓…

MySql进阶篇---006:存储引擎,索引,SQL优化,视图、存储过程、变量、流程控制、游标、存储函数、触发器

1. 存储引擎 1.1 MySQL体系结构 1).连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证…

Java大数 -- BigInteger类

在java语言中,每一种整数类型都有自己的上限和下限,如果要想对非常大的整数做运算,就需要使用BigInteger类。特别在做算法题传入一个数值型的字符串时。 1.包 import java.math.*; 2.构造方法 public BigInteger(String str){...} BigInte…

10.1select并发服务器以及客户端

服务器&#xff1a; #include<myhead.h>//do-while只是为了不让花括号单独存在&#xff0c;并不循环 #define ERR_MSG(msg) do{\fprintf(stderr,"%d:",__LINE__);\perror(msg);\ }while(0);#define PORT 8888//端口号1024-49151 #define IP "192.168.2.5…

三等分功分器[波导]设计详细教程

想必大家通过阅读相关文献可以发现三等分实现可以有很多不同的方法&#xff0c;这里采用的是先不等分再等分的方式&#xff0c;仅供参考。 主要指标 中心频率为280GHz&#xff0c;采用WR-3频段的标准波导&#xff0c;将2:1不等功率分配耦合器与3dB等功率分配耦合器级联&#…

动态规划:两个数组的dp问题(C++)

动态规划&#xff1a;两个数组的dp问题 前言两个数组的dp问题1.最长公共子序列&#xff08;中等&#xff09;2.不同的子序列&#xff08;困难&#xff09;3.通配符匹配&#xff08;困难&#xff09;4.正则表达式&#xff08;困难&#xff09;5.交错字符串&#xff08;中等&…

【NLP的python库(03/4) 】: 全面概述

一、说明 Python 对自然语言处理库有丰富的支持。从文本处理、标记化文本并确定其引理开始&#xff0c;到句法分析、解析文本并分配句法角色&#xff0c;再到语义处理&#xff0c;例如识别命名实体、情感分析和文档分类&#xff0c;一切都由至少一个库提供。那么&#xff0c;你…

加入PreAuthorize注解鉴权之后NullPointerException报错

记录一次很坑的bug&#xff0c;加入PreAuthorize注解鉴权之后NullPointerException报错&#xff0c;按理来说没有权限应该403报错&#xff0c;但是这个是500报错&#xff0c;原因是因为controller层的service注入失败&#xff0c;然而我去掉注解后service注入成功&#xff0c;并…

初级篇—第三章多表查询

文章目录 为什么需要多表查询一个案例引发的多表连接初代查询笛卡尔积&#xff08;或交叉连接&#xff09;的理解 多表查询分类等值连接 vs 非等值连接自连接 vs 非自连接内连接VS外连接 SQL99语法实现多表查询内连接的实现外连接的实现左外连接右外连接满外连接 UNION的使用7种…

Mysql高手养成——第一章:索引知识,浅尝性能分析

&#x1f4e3; &#x1f4e3; &#x1f4e3; &#x1f4e2;&#x1f4e2;&#x1f4e2; 我是小冷 侧重后端的全栈工程师&#xff0c;有关技术问题需要讨论交流的直接私信即可 ⏩当前专栏&#xff1a;mysql高手养成系列- 第一章 索引与浅尝性能分析 ✏️高质量技术专栏专栏链接:…

解决前端二进制流下载的文件(例如:excel)打不开的问题

1. 现在后端请求数据后&#xff0c;返回了一个二进制的数据&#xff0c;我们要把它下载下来。 这是响应的数据&#xff1a; 2. 这是调用接口的地方&#xff1a; uploadOk(){if(this.files.length 0){return this.$Message.warning("请选择上传文件&#xff01;&#xff…

vite跨域proxy设置与开发、生产环境的接口配置,接口在生产环境下,还能使用proxy代理地址吗

文章目录 vite的proxy开发环境设置如果后端没有提供可以替换的/mis等可替换的后缀的处理办法接口如何区分.env.development开发和.env.production生产环境接口在生产环境下&#xff0c;还能使用proxy代理地址吗&#xff1f; vite的proxy开发环境设置 环境&#xff1a; vite 4…

Lua学习笔记:require非.lua拓展名的文件

前言 本篇在讲什么 Lua的require相关的内容 本篇需要什么 对Lua语法有简单认知 对C语法有简单认知 依赖Visual Studio工具 本篇的特色 具有全流程的图文教学 重实践&#xff0c;轻理论&#xff0c;快速上手 提供全流程的源码内容 ★提高阅读体验★ &#x1f449; ♠…

ChatGPT的截图识别功能测评:开启图像中的文字与信息的新纪元

文章目录 根据截图&#xff0c;识别菜品根据截图&#xff0c;识别数学公式根据截图生成前端UI代码可视化图像复现案例一案例二 更多可以使用的方向 制作人&#xff1a;川川 辛苦测评&#xff0c;如果对你有帮助支持一下书籍&#xff1a;https://item.jd.com/14049708.html 根据…

微信小程序,动态设置三级联动, 省市区街道

1.第一步 传parentId0 查询省份 2.第二步 选择省份,传pathId选择省份的pathId, 不传parentId,会查询出 市/县数据 3.第三步 根据选择县的parentId 查询街道数据,传parentId选择的县id 4.选择结果回显 显示所选择的 path 以/分割 取最后一级<van-dropdown-menu…

wustctf2020_name_your_cat

wustctf2020_name_your_cat Arch: i386-32-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x8048000)32位&#xff0c;开了NX和canary int shell() {return system("/bin/sh"); }有个后门函数 unsigned int…

【量化】量化原理浅析

前言 模型在端侧运行时&#xff0c;会追求模型保持原有精度的同时&#xff0c;让模型的运行速度更快。基本方向为模型压缩和加速&#xff0c;着力于减少网络参数量、降低计算复杂度。可通过以下方式实现&#xff1a; 针对网络结构本身进行改进&#xff0c;常用的3x3的卷积的叠加…

重置Jetson设备的Ubuntu密码:通过挂载根目录到另一个Linux系统

在本文中&#xff0c;我们将介绍如何在忘记Ubuntu 20.04密码的情况下重置密码。我们将通过将Ubuntu的根目录挂载到另一个Linux系统来实现这一目的。我们还将介绍chroot命令的功能。 1. 背景 最近&#xff0c;我们研发团队遇到了一个棘手的问题。一台用于研发&#xff0c;多人使…

大数据Doris(三):Doris编译部署篇

文章目录 Doris编译部署篇 一、Doris编译