python中redis操作整理

下载redis命令

pip install redis

连接redis

import redis
# host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379
pool = redis.ConnectionPool(host='localhost', port=6379,decode_responses=True)
r = redis.Redis(connection_pool=pool)

操作字符串

# key是"aa" value是"11" 将键值对存入redis缓存,有效期300秒
r.set('aa', '11',ex=300)
# key是"bb" value是"22" 将键值对存入redis缓存,有效期30000毫秒
r.set('bb', '22',px=30000)
# 取出键aa对应的值
print(r.get('aa'))
#批量获取,取出键gender、name对应的值
print(r.mget('aa', 'bb'))

操作hash

# 设置一个哈希“user1”,其中包括name=shamo,age=18,job=tester
r.hset('user1','name','lisa')
r.hset('user1','age',18)
r.hset('user1','job','tester')
# 获取user1对应的所有值
print(r.hgetall('user1'))
# 批量设置哈希"user2",其中包括name=xiao,age=18,job=tester
r.hmset('user2',{'name':'xiao','age':18,'job':'tester'})
# 批量获取哈希"user2"中的key为name和age的值
print(r.hmget('user2', 'name', 'age'))

操作列表

# 向列表"list1"中追加数据data1,data2
r.lpush('list1','data1','data2')
# 获取列表"list1"中所有数据
print(r.lrange('list1',0,-1))

操作集合

# 向列表"set1"中追加数据data1,data2
r.sadd('set1','data1','data2')
# 获取集合“set1”的所有元素
print(r.smembers('set1'))

操作有序集合

# 向有序集合"zset1"中追加数据data1,data2,其中数字是各自数据的分数,用来排序
r.zadd('zset1',{'data1':14,'data2':13})
# 获取"zset1"中所有数据
print(r.zrange('zset1',0,-1))

其他操作

r.delete('key1') #删除某个key
r.exists('key1') #检查key是否存在
r.expire('user1',10) #设置这个key的有效期为10秒
r.pexpire('user2',10000) #设置这个key的有效期为10000毫秒
r.type('zset1') #获取某个key对应的数据类型

备注:项目后台是java语言开发,所以在redis缓存中存储的基本都是java对象的序列化数据,那么python在获取java对象的序列化数据后需要进行反序列化转成对象才能正常获取数据信息,因此安装一个第三方库,用来说java对象的转换
安装第三方库命令
pip install javaobj-py3
然后封装一个redis方法:

class RedisUtil:
def __init__(self,host,pwd,port=6379,decode_responses=False):
"""
:param host: redis服务器地址
:param pwd: redis密码
:param port: redis端口 默认6379
:param decode_responses: 默认为False,表示返回的是bytes数据
"""
self.pool = redis.ConnectionPool(host=host,
port=port,password=pwd,encoding_errors='ignore',decode_responses=decode_resp
onses)
self.r = redis.Redis(connection_pool=self.pool)
def get(self,key):
type = self.r.type(key).decode('utf8')
if type=='string':
return self.r.get(key)
elif type=='hash':
return self.r.hgetall(key)
elif type=='zset':
return self.r.zrange(key,0,-1)
elif type=='set':
return self.r.smembers(key)
else:
raise Exception(f'不支持的数据类型{type}或者{key}不存在')```然后在有需要用到redis中的用例中调用:rd = RedisUtil(host='121.42.15.146',pwd='testfan')
res = rd.get('xxxx')
#将从redis中得到的序列化java对象转换成python对象
res1 = javaobj.loads(res) #res1是个列表如果接口运用到redis比较多,思路:在公共方法里面加一个钩子函数。例如:

@pytest.fixture(scope=‘session’)
def redis_conn():
redis_util=RedisUtil(host=‘127.0.0.1’, pwd=‘123456’)
return redis_conn

然后在需要用的测试用例里面直接调用res = redis_con.get()

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自然语言处理入门4——RNN

一般来说,提到自然语言处理,我们都会涉及到循环神经网络(RNN),这是因为自然语言可以被看作是一个时间序列,这个时间序列中的元素是一个个的token。传统的前馈神经网络结构简单,但是不能很好的处…

数据结构之链表(双链表)

目录 一、双向带头循环链表 概念 二、哨兵位的头节点 优点: 头节点的初始化 三、带头双向链表的实现 1.双链表的销毁 2.双链表的打印 3.双链表的尾插和头插 尾插: 头插: 4.双链表的尾删和头删 尾删: 头删: …

ASP3605同步降压调节器——满足汽车电子严苛要求的电源芯片方案

ASP3605高效同步降压调节器,通过AEC-Q100 Grade1认证,输入电压4V至15V,输出电流5A,峰值效率94%。车规级型号ASP3605A3U支持-40C至125C工作温度,适用于ADAS、车载信息娱乐系统等场景。 面向汽车电子的核心功能设计 1. …

vue3+Ts+elementPlus二次封装Table分页表格,表格内展示图片、switch开关、支持

目录 一.项目文件结构 二.实现代码 1.子组件(表格组件) 2.父组件(使用表格) 一.项目文件结构 1.表格组件(子组件)位置 2.使用表格组件的页面文件(父组件)位置 3.演示图片位置 ele…

[特殊字符]1.2.1 新型基础设施建设

🚀 新型基础设施建设全解析 🌟 核心概念与定义 维度详细内容定义以新发展理念为引领,以技术创新为驱动,以信息网络为基础,提供数字转型、智能升级、融合创新服务的基础设施体系。提出背景2018年中央经济工作会议首次提…

SQL Server数据库慢SQL调优

SQL Server中慢SQL会显著降低系统性能并引发级联效应。首先,用户直接体验响应时间延长,核心业务操作(如交易处理、报表生成)效率下降,导致客户满意度降低甚至业务中断。其次,资源利用率失衡,CPU…

【安全运营】安全运营关于告警降噪的一些梳理

目录 前言一、智能技术层面1、机器学习和 AI 模型训练2、攻击成功判定 二、多源关联分析1、多源设备关联(跨设备日志整合)2、上下文信息增强 三、业务白名单和策略优化1、动态白名单机制2、阈值和规则调整 四、自动化和流程化1、告警归并与去重2、同类型…

逆向中常见的加密算法识别

1、base64及换表 base64主要是将输入的每3字节(共24bit)按照每六比特分成一组,变成4个小于64的索引值,然后通过一个索引表得到4个可见的字符。 索引表为一个64字节的字符串,如果在代码中发现引用了这个索引表“ABCDEF…

《UNIX网络编程卷1:套接字联网API》第2章 传输层:TCP、UDP和SCTP

《UNIX网络编程卷1:套接字联网API》第2章 传输层:TCP、UDP和SCTP 2.1 传输层的核心作用与协议选型 传输层是网络协议栈中承上启下的核心层,直接决定应用的通信质量。其主要职责包括: 端到端通信:屏蔽底层网络细节&am…

Eclipse 创建 Java 类

Eclipse 创建 Java 类 引言 Eclipse 是一款功能强大的集成开发环境(IDE),被广泛用于 Java 开发。本文将详细介绍如何在 Eclipse 中创建 Java 类,包括配置开发环境、创建新项目、添加类以及编写类代码等步骤。 配置 Eclipse 开发环境 1. 安装 Eclipse 首先,您需要在您…

汽车安全确认等级-中国等保

1、概念解析 网络安全保证等级(Cybersecurity Assurance Level)通常指在不同标准或框架下,根据系统或数据的敏感性、重要性以及潜在风险划分的等级,用于指导组织采取相应的安全防护措施。以下是几个常见的网络安全保证等级体系及…

蓝桥杯练习day2:执行操作后的变化量

题意 存在一种仅支持 4 种操作和 1 个变量 X 的编程语言: X 和 X 使变量 X 的值 加 1 –X 和 X-- 使变量 X 的值 减 1 最初,X 的值是 0 给你一个字符串数组 operations ,这是由操作组成的一个列表,返回执行所有操作后&#xff…

【机器学习chp14 — 2】生成式模型—变分自编码器VAE(超详细分析,易于理解,推导严谨,一文就够了)

目录 二、变分自编码器 VAE 1、自编码器 AE (1)自编码器的基本结构与目标 1.1 编码器-解码器结构 1.2 目标函数:重构误差最小化 (2)自编码器与 PCA 的对比 2.1 PCA 与线性降维 2.2 非线性映射的优势 &#xf…

Linux 一步部署DHCP服务

#!/bin/bash #脚本作者和日期 #author: PEI #date: 20250319 #检查root权限 if [ "$USER" ! "root" ]; then echo "错误:非root用户,权限不足!" exit 0 fi #防火墙与高级权限 systemctl stop firewa…

【RHCE】awk文本处理

目录 基本介绍 命令格式 awk基本使用 命令行读取程序脚本 数据字段变量 脚本中使用多个命令 文件中读取程序 处理数据前运行脚本(BEGIN) 处理数据后运行脚本(END) awk高级用法 变量 内建变量 自定义变量 数组 定义…

Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析

Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析 一、Teleport:突破组件层级的时空传送 1.1 实现原理图解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

工业界处理 Atomic 操作的优化策略

在产业界,处理 atomic 操作 时,通常会根据具体情境选择不同的策略,主要取决于以下三个因素: 内存一致性需求:是否需要确保 所有线程(threads) 都能看到最新的变量值。性能需求:是否…

Python功能完美的宝库——内置的强大“武器库”builtins

builtins模块包含了Python大量的内置对象(函数、异常和类型等),她是Python的内置武器库,堪称功能完美的宝库。 笔记模板由python脚本于2025-03-19 08:16:27创建,本篇笔记适合喜欢探究python的coder翻阅。 【学习的细节…

三分钟掌握视频分辨率修改 | 在 Rust 中优雅地使用 FFmpeg

前言 在视频处理领域,调整视频分辨率是一个绕不过去的需求。比如,你可能需要将一段视频适配到手机、平板或大屏电视上,或者为了节省存储空间和网络带宽而压缩视频尺寸。然而,传统的FFmpeg命令行工具虽然功能强大,但复…

PyTorch 深度学习实战(17):Asynchronous Advantage Actor-Critic (A3C) 算法与并行训练

在上一篇文章中,我们深入探讨了 Soft Actor-Critic (SAC) 算法及其在平衡探索与利用方面的优势。本文将介绍强化学习领域的重要里程碑——Asynchronous Advantage Actor-Critic (A3C) 算法,并展示如何利用 PyTorch 实现并行化训练来加速学习过程。 一、A…