淺析Python中怎么用Redis

python中怎么用redis?下面本篇文章給大家介紹一下python使用redis的方法,希望對大家有所幫助!

淺析Python中怎么用Redis

前面我們都是使用 Redis 客戶端對 Redis 進行使用的,但是實際工作中,我們大多數情況下都是通過代碼來使用 Redis 的,由于小編對 Python 比較熟悉,所以我們今天就一起來學習下如何使用 Python 來操作 Redis。【相關推薦: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')))

淺析Python中怎么用Redis

立即學習Python免費學習筆記(深入)”;

淺析Python中怎么用Redis

其中的 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')))

淺析Python中怎么用Redis

你會發現,在實際使用中直連和使用連接池的效果是一樣的,只是在高并發的時候會有明顯的區別。

基操實踐

對于眾多的 Redis 命令,我們在此以 SET 命令為例進行展示。

格式: set(name, value, ex=None, px=None, nx=False, xx=False)

在 redis-py 中 set 命令的參數:

參數名 釋義
ex 過期時間(m)
px 過期時間(ms)
nx 如果為真,則只有 name 不存在時,當前 set 操作才執行
xx 如果為真,則只有 name 存在時,當前 set 操作才執行

ex

我們計劃創建一個 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')))

淺析Python中怎么用Redis

nx

由于 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')))

淺析Python中怎么用Redis

如上,你會發現 name 的 set 未生效,因為 name 已經存在于數據庫中。而 name1 的 set 已經生效,因為 name1 是之前在數據庫中不存在的。

xx

我們計劃去重復 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

以上,就是今天全部的內容,更多信息建議參考 redis 官方文檔。

更多編程相關知識,請訪問:Redis視頻教程!!

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享