您好,登錄后才能下訂單哦!
本篇內容主要講解“Python中如何用Redis”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python中如何用Redis”吧!
前面我們都是使用 Redis
客戶端對 Redis
進行使用的,但是實際工作中,我們大多數情況下都是通過代碼來使用 Redis
的,由于小編對 Python
比較熟悉,所以我們今天就一起來學習下如何使用 Python
來操作 Redis
。
Redis
首先需要安裝好。
Python
安裝好(建議使用 Python3
)。
Redis
的 Python
庫安裝好(pip install redis
)。
例:我們計劃通過 Python
連接到 Redis
。然后寫入一個 kv
,最后將查詢到的 v
打印出來。
#!/usr/bin/python3 import redis # 導入redis模塊 r = redis.Redis(host='localhost', port=6379, password="pwd@321", decode_responses=True) # host是redis主機,password為認證密碼,redis默認端口是6379 r.set('name', 'phyger-from-python-redis') # key是"name" value是"phyger-from-python-redis" 將鍵值對存入redis緩存 print(r['name']) # 第一種:取出鍵name對應的值 print(r.get('name')) # 第二種:取出鍵name對應的值 print(type(r.get('name')))
其中的
get
為連接池最后一個執行的命令。
通常情況下,需要連接 redis
時,會創建一個連接,基于這個連接進行 redis
操作,操作完成后去釋放。正常情況下,這是沒有問題的,但是并發量較高的情況下,頻繁的連接創建和釋放對性能會有較高的影響,于是連接池發揮作用。
連接池的原理:預先創建多個連接,當進行 redis
操作時,直接獲取已經創建好的連接進行操作。完成后,不會釋放這個連接,而是讓其返回連接池,用于后續 redis
操作!這樣避免連續創建和釋放,從而提高了性能!
#!/usr/bin/python3 import redis,time # 導入redis模塊,通過python操作redis 也可以直接在redis主機的服務端操作緩存數據庫 pool = redis.ConnectionPool(host='localhost', port=6379, password="pwd@321", decode_responses=True) # host是redis主機,需要redis服務端和客戶端都起著 redis默認端口是6379 r = redis.Redis(connection_pool=pool) r.set('name', 'phyger-from-python-redis') print(r['name']) print(r.get('name')) # 取出鍵name對應的值 print(type(r.get('name')))
你會發現,在實際使用中直連和使用連接池的效果是一樣的,只是在高并發的時候會有明顯的區別。
對于眾多的 Redis
命令,我們在此以 SET
命令為例進行展示。
格式: set(name, value, ex=None, px=None, nx=False, xx=False)
在 redis-py 中 set 命令的參數:
參數名 | 釋義 |
---|---|
ex | <int> 過期時間(m) |
px | <int> 過期時間(ms) |
nx | <bool> 如果為真,則只有 name 不存在時,當前 set 操作才執行 |
xx | <bool> 如果為真,則只有 name 存在時,當前 set 操作才執行 |
我們計劃創建一個 kv
并且設置其 ex
為 3
,期待 3
秒后此 k
的 v
會變為 None
。
#!/usr/bin/python3 import redis,time # 導入redis模塊,通過python操作redis 也可以直接在redis主機的服務端操作緩存數據庫 pool = redis.ConnectionPool(host='localhost', port=6379, password="pwd@321", decode_responses=True) # host是redis主機,需要redis服務端和客戶端都起著 redis默認端口是6379 r = redis.Redis(connection_pool=pool) r.set('name', 'phyger-from-python-redis',ex=3) print(r['name']) # 應當有v time.sleep(3) print(r.get('name')) # 應當無v print(type(r.get('name')))
由于 px 的單位太短,我們就不做演示,效果和 ex 相同。
我們計劃去重復 set
前面已經 set
過的 name
,不出意外的話,在 nx
為真時,我們將會 set
失敗。但是人如果 set
不存在的 name1
,則會成功。
#!/usr/bin/python3 import redis,time # 導入redis模塊,通過python操作redis 也可以直接在redis主機的服務端操作緩存數據庫 pool = redis.ConnectionPool(host='localhost', port=6379, password="pwd@321", decode_responses=True) # host是redis主機,需要redis服務端和客戶端都起著 redis默認端口是6379 r = redis.Redis(connection_pool=pool) r.set('name', 'phyger-0',nx=3) # set失敗 print(r['name']) # 應當不生效 r.set('name1', 'phyger-1',nx=3) # set成功 print(r.get('name1')) # 應當生效 print(type(r.get('name')))
如上,你會發現
name
的set
未生效,因為name
已經存在于數據庫中。而name1
的set
已經生效,因為name1
是之前在數據庫中不存在的。
我們計劃去重復 set
前面已經 set
過的 name
,不出意外的話,在 nx
為真時,我們將會 set
成功。但是人如果 set
不存在的 name2
,則會失敗。
#!/usr/bin/python3 import redis,time # 導入redis模塊,通過python操作redis 也可以直接在redis主機的服務端操作緩存數據庫 pool = redis.ConnectionPool(host='localhost', port=6379, password="pwd@321", decode_responses=True) # host是redis主機,需要redis服務端和客戶端都起著 redis默認端口是6379 r = redis.Redis(connection_pool=pool) r.set('name', 'phyger-0',xx=3) # set失敗 print(r['name']) # 應當變了 r.set('name2', 'phyger-1',xx=3) # set成功 print(r.get('name2')) # 應當沒有set成功 print(type(r.get('name')))
到此,相信大家對“Python中如何用Redis”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。