Python連接Redis進(jìn)行增刪改查(CRUD)操作
介紹
Redis 是一個(gè)開源的內(nèi)存數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)系統(tǒng),支持多種數(shù)據(jù)結(jié)構(gòu)(如字符串、哈希、列表、集合、有序集合等),廣泛用于緩存、會(huì)話管理、消息隊(duì)列等場(chǎng)景。本文將介紹如何在 Python 中使用 redis-py
庫(kù)連接 Redis 數(shù)據(jù)庫(kù),并進(jìn)行常見的增刪改查操作。
安裝 redis-py
首先,需要安裝 redis-py
庫(kù),這是 Python 與 Redis 交互的官方客戶端。
pip install redis
連接 Redis
在進(jìn)行增刪改查操作前,我們首先需要連接到 Redis 服務(wù)器。假設(shè) Redis 服務(wù)運(yùn)行在本地默認(rèn)端口 6379。
import redis # 連接到 Redis 服務(wù) r = redis.StrictRedis(host='localhost', port=6379, db=0, decode_responses=True)
參數(shù)說明:
host
:Redis 服務(wù)的主機(jī),默認(rèn)是'localhost'
。port
:Redis 服務(wù)的端口,默認(rèn)是6379
。db
:選擇使用的數(shù)據(jù)庫(kù),Redis 默認(rèn)有 16 個(gè)數(shù)據(jù)庫(kù),編號(hào)從 0 到 15,默認(rèn)連接的是db=0
。decode_responses=True
:確保返回的結(jié)果是字符串,而不是字節(jié)。
增加(Create)
Redis 支持多種數(shù)據(jù)結(jié)構(gòu)的操作,我們可以使用 set()
方法來設(shè)置一個(gè)鍵值對(duì)。
# 設(shè)置一個(gè)字符串類型的鍵值對(duì) r.set('name', 'John Doe') # 設(shè)置多個(gè)鍵值對(duì) r.mset({'age': 30, 'city': 'New York'})
set()
:設(shè)置一個(gè)鍵的值,如果該鍵已經(jīng)存在,則會(huì)覆蓋原有的值。mset()
:批量設(shè)置多個(gè)鍵值對(duì)。
查詢(Read)
可以通過 get()
方法來獲取 Redis 中存儲(chǔ)的值。
# 獲取單個(gè)鍵的值 name = r.get('name') print(f'Name: {name}') # 輸出: Name: John Doe # 獲取多個(gè)鍵的值 values = r.mget('name', 'age', 'city') print(values) # 輸出: ['John Doe', '30', 'New York']
get()
:獲取指定鍵的值。mget()
:批量獲取多個(gè)鍵的值。
更新(Update)
Redis 的更新操作其實(shí)是通過 set()
來實(shí)現(xiàn)的,因?yàn)?nbsp;set()
會(huì)覆蓋已存在的鍵值對(duì)。
# 更新鍵 'age' 的值 r.set('age', 35) print(r.get('age')) # 輸出: 35
刪除(Delete)
如果需要?jiǎng)h除一個(gè)鍵值對(duì),可以使用 delete()
方法。
# 刪除鍵 'city' r.delete('city') print(r.get('city')) # 輸出: None,因?yàn)殒I 'city' 已被刪除
delete()
:刪除指定的鍵,如果鍵不存在,什么都不做。
其他常用操作
除了基本的 CRUD 操作外,Redis 還支持一些其他有用的操作:
檢查鍵是否存在
# 檢查鍵 'name' 是否存在 exists = r.exists('name') print(exists) # 輸出: True
設(shè)置鍵的過期時(shí)間
# 設(shè)置鍵 'name' 在 10 秒后過期 r.expire('name', 10)
獲取鍵的過期時(shí)間
# 獲取鍵 'name' 的剩余過期時(shí)間 ttl = r.ttl('name') print(ttl) # 輸出: 剩余的秒數(shù)
使用哈希類型存儲(chǔ)數(shù)據(jù)
Redis 還支持哈希類型,適用于存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù)??梢允褂?nbsp;hset()
, hget()
等方法操作哈希。
# 設(shè)置哈希鍵 'user',并存儲(chǔ)字段 'name' 和 'age' r.hset('user', 'name', 'John Doe') r.hset('user', 'age', 30) # 獲取哈希中的字段 name = r.hget('user', 'name') age = r.hget('user', 'age') print(f'Name: {name}, Age: {age}')
總結(jié)
本文展示了如何在 Python 中使用 redis-py
庫(kù)連接 Redis 并進(jìn)行增刪改查操作。Redis 的靈活性和高效性使其成為構(gòu)建高性能應(yīng)用的理想選擇。除了本文介紹的基本操作,Redis 還提供了許多高級(jí)功能,如事務(wù)、管道、發(fā)布訂閱等,可以根據(jù)具體應(yīng)用場(chǎng)景進(jìn)一步擴(kuò)展。
完整示例
展示如何使用 Python 連接 Redis,并進(jìn)行增、查、改、刪等操作。將使用 redis-py
庫(kù),并使用 Redis 的多種數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作。示例將包括基本的字符串操作、哈希操作、以及如何設(shè)置鍵的過期時(shí)間。
import redis # 連接到 Redis 服務(wù) r = redis.StrictRedis(host='localhost', port=6379, db=0, decode_responses=True) # 1. 增加(Create)操作 # 設(shè)置字符串類型的鍵值對(duì) r.set('name', 'John Doe') r.set('age', 30) r.set('city', 'New York') # 設(shè)置一個(gè)哈希類型的鍵值對(duì) r.hset('user:1000', 'name', 'Alice') r.hset('user:1000', 'age', 25) # 批量設(shè)置多個(gè)鍵值對(duì) r.mset({'country': 'USA', 'language': 'English'}) # 打印結(jié)果 print(f"Set 'name': {r.get('name')}") print(f"Set 'age': {r.get('age')}") print(f"Set 'city': {r.get('city')}") print(f"Set 'country' and 'language': {r.mget('country', 'language')}") # 2. 查詢(Read)操作 # 獲取單個(gè)鍵值 print("\n--查詢操作--") name = r.get('name') print(f"Name: {name}") # 獲取多個(gè)鍵值 user_data = r.mget('name', 'age', 'city', 'country', 'language') print(f"User data: {user_data}") # 獲取哈希中的字段 user_name = r.hget('user:1000', 'name') user_age = r.hget('user:1000', 'age') print(f"User 1000 Name: {user_name}, Age: {user_age}") # 3. 更新(Update)操作 # 更新字符串類型的值 r.set('age', 35) print(f"Updated 'age': {r.get('age')}") # 更新哈希中的字段 r.hset('user:1000', 'age', 26) print(f"Updated 'user:1000' age: {r.hget('user:1000', 'age')}") # 4. 刪除(Delete)操作 # 刪除單個(gè)鍵 r.delete('city') print(f"Deleted 'city', current value: {r.get('city')}") # 刪除哈希中的字段 r.hdel('user:1000', 'name') print(f"Deleted 'name' from 'user:1000', current fields: {r.hgetall('user:1000')}") # 5. 設(shè)置鍵的過期時(shí)間 # 設(shè)置 'country' 鍵在 5 秒后過期 r.expire('country', 5) print(f"Is 'country' key expired? {r.exists('country')}") # 初始為 True # 等待 6 秒鐘,鍵應(yīng)該過期 import time time.sleep(6) print(f"After waiting 6 seconds, is 'country' expired? {r.exists('country')}") # 應(yīng)該為 False # 6. 其他操作:檢查鍵是否存在 key_exists = r.exists('name') print(f"Does 'name' exist? {key_exists}") # 獲取鍵的剩余生存時(shí)間 ttl = r.ttl('age') print(f"The remaining time-to-live for 'age' is: {ttl} seconds") # 獲取哈希中所有字段和值 user_data_all = r.hgetall('user:1000') print(f"All fields in 'user:1000': {user_data_all}") # 完成 print("\n-- 完成所有操作 --")
代碼說明:
連接 Redis使用
redis.StrictRedis()
來創(chuàng)建一個(gè) Redis 連接對(duì)象,指定主機(jī)名、端口和數(shù)據(jù)庫(kù)索引。這里使用了decode_responses=True
,讓返回的結(jié)果是字符串而不是字節(jié)。增(Create)操作
- 使用
set()
設(shè)置字符串類型的鍵值對(duì)。 - 使用
hset()
設(shè)置哈希類型的字段。 - 使用
mset()
批量設(shè)置多個(gè)鍵值對(duì)。
- 使用
查(Read)操作
- 使用
get()
獲取單個(gè)字符串類型的值。 - 使用
mget()
批量獲取多個(gè)鍵的值。 - 使用
hget()
獲取哈希類型的指定字段的值。 - 使用
hgetall()
獲取哈希中所有的字段及其對(duì)應(yīng)的值。
- 使用
改(Update)操作更新操作通過調(diào)用
set()
或hset()
來實(shí)現(xiàn)。Redis 會(huì)自動(dòng)覆蓋已有的值。刪(Delete)操作
- 使用
delete()
刪除單個(gè)鍵。 - 使用
hdel()
刪除哈希中的某個(gè)字段。
- 使用
過期時(shí)間使用
expire()
設(shè)置鍵的過期時(shí)間,單位為秒。使用ttl()
獲取剩余的生存時(shí)間。檢查鍵是否存在使用
exists()
判斷一個(gè)鍵是否存在。
運(yùn)行結(jié)果示例:
Set 'name': John Doe Set 'age': 30 Set 'city': New York Set 'country' and 'language': ['USA', 'English'] --查詢操作-- Name: John Doe User data: ['John Doe', '30', 'New York', 'USA', 'English'] User 1000 Name: Alice, Age: 25 Updated 'age': 35 Updated 'user:1000' age: 26 Deleted 'city', current value: None Deleted 'name' from 'user:1000', current fields: {'age': '26'} Is 'country' key expired? True After waiting 6 seconds, is 'country' expired? False Does 'name' exist? True The remaining time-to-live for 'age' is: -1 seconds All fields in 'user:1000': {'age': '26'} -- 完成所有操作 --
總結(jié)
通過這個(gè)完整的示例,我們展示了如何使用 Python 通過 redis-py
庫(kù)與 Redis 進(jìn)行基本的增刪改查操作,并且涵蓋了 Redis 中一些常用的功能,如設(shè)置過期時(shí)間和檢查鍵是否存在。這些操作適用于緩存管理、會(huì)話存儲(chǔ)、實(shí)時(shí)數(shù)據(jù)處理等應(yīng)用場(chǎng)景。
到此這篇關(guān)于Python連接Redis進(jìn)行增刪改查(CRUD)操作的文章就介紹到這了,更多相關(guān)Python連接Redis增刪改查內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python調(diào)用Elasticsearch執(zhí)行增刪改查操作
- Python操作PDF圖片的基本方法(增刪改查)
- Python使用fastapi快速編寫一個(gè)增刪改查的接口
- Python使用PyMySql增刪改查Mysql數(shù)據(jù)庫(kù)的實(shí)現(xiàn)
- Python集合的增刪改查操作
- python?Django實(shí)現(xiàn)增刪改查實(shí)戰(zhàn)代碼
- python numpy中對(duì)ndarry按照index增刪改查
- 詳解Python中字典的增刪改查
- 利用Python實(shí)現(xiàn)sqlite3增刪改查的封裝
- python 列表,集合和字典的增刪改查
相關(guān)文章
Python3按一定數(shù)據(jù)位數(shù)格式處理bin文件的方法
今天小編就為大家分享一篇Python3按一定數(shù)據(jù)位數(shù)格式處理bin文件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01Python實(shí)現(xiàn)打印螺旋矩陣功能的方法
這篇文章主要介紹了Python實(shí)現(xiàn)打印螺旋矩陣功能的方法,簡(jiǎn)單描述了螺旋矩陣的概念、原理及Python實(shí)現(xiàn)方法,需要的朋友可以參考下2017-11-11python多線程性能測(cè)試之快速mock數(shù)據(jù)
這篇文章主要為大家介紹了python多線程性能測(cè)試之快速mock數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06python排序函數(shù)sort()與sorted()的區(qū)別
這篇文章主要介紹了python排序函數(shù)sort()與sorted()的區(qū)別,需要的朋友可以參考下2018-09-09Python這樣操作能存儲(chǔ)100多萬(wàn)行的xlsx文件
這篇文章主要介紹了Python這樣操作能存儲(chǔ)100多萬(wàn)行的xlsx文件的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04python實(shí)現(xiàn)同級(jí)目錄調(diào)用的示例詳解
同級(jí)目錄指的是位于同一級(jí)別的文件夾,這些文件夾具有相同的層級(jí)結(jié)構(gòu),它們相互平行,沒有一個(gè)被包含在另一個(gè)之中,本文將給大家介紹python實(shí)現(xiàn)同級(jí)目錄調(diào)用的示例,需要的朋友可以參考下2024-06-06Python腳本,標(biāo)識(shí)符,變量使用,腳本語(yǔ)句,注釋,模塊引用詳解
這篇文章主要為大家詳細(xì)介紹了Python腳本,標(biāo)識(shí)符,變量使用,腳本語(yǔ)句,注釋,模塊引用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02