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.pswp.cn/diannao/73873.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73873.shtml
英文地址,請注明出處:http://en.pswp.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…