首頁  >  文章  >  資料庫  >  淺析Python中怎麼用Redis

淺析Python中怎麼用Redis

青灯夜游
青灯夜游轉載
2021-11-22 19:22:542616瀏覽

Python中怎麼用Redis?以下這篇文章跟大家介紹一下Python使用Redis的方法,希望對大家有幫助!

淺析Python中怎麼用Redis

前面我們都是使用Redis 客戶端對Redis 進行使用的,但是實際工作中,我們大多數情況下方都是透過程式碼來使用Redis 的,由於小編對Python 比較熟悉,所以我們今天就一起來學習下如何使用Python 來操作Redis。 【相關建議:Redis影片教學

環境準備

  • #Redis 首先需要安裝好。
  • Python 安裝好(建議使用 Python3)。
  • RedisPython 函式庫安裝好(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中怎麼用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 <int></int>過期時間(m)
px <int></int>過期時間(ms)
nx############如果為真,則只有name 不存在時,當前set 操作才執行############xx############如果為真,則只有name 存在時,當前set 操作才執行############

ex

我们计划创建一个 kv 并且设置其 ex3,期待 3 秒后此 kv 会变为 None

#!/usr/bin/python3

import redis,time   # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库

pool = redis.ConnectionPool(host=&#39;localhost&#39;, port=6379, password="pwd@321", decode_responses=True)   # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379
r = redis.Redis(connection_pool=pool)
r.set(&#39;name&#39;, &#39;phyger-from-python-redis&#39;,ex=3)
print(r[&#39;name&#39;])    # 应当有v
time.sleep(3)
print(r.get(&#39;name&#39;))  # 应当无v
print(type(r.get(&#39;name&#39;)))

淺析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=&#39;localhost&#39;, port=6379, password="pwd@321", decode_responses=True)   # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379
r = redis.Redis(connection_pool=pool)
r.set(&#39;name&#39;, &#39;phyger-0&#39;,nx=3) # set失败
print(r[&#39;name&#39;])    # 应当不生效
r.set(&#39;name1&#39;, &#39;phyger-1&#39;,nx=3) # set成功
print(r.get(&#39;name1&#39;))  # 应当生效
print(type(r.get(&#39;name&#39;)))

淺析Python中怎麼用Redis

如上,你会发现 nameset 未生效,因为 name 已经存在于数据库中。而 name1set 已经生效,因为 name1 是之前在数据库中不存在的。

xx

我们计划去重复 set 前面已经 set 过的 name,不出意外的话,在 nx 为真时,我们将会 set 成功。但是人如果 set 不存在的 name2,则会失败。

#!/usr/bin/python3

import redis,time   # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库

pool = redis.ConnectionPool(host=&#39;localhost&#39;, port=6379, password="pwd@321", decode_responses=True)   # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379
r = redis.Redis(connection_pool=pool)
r.set(&#39;name&#39;, &#39;phyger-0&#39;,xx=3) # set失败
print(r[&#39;name&#39;])    # 应当变了
r.set(&#39;name2&#39;, &#39;phyger-1&#39;,xx=3) # set成功
print(r.get(&#39;name2&#39;))  # 应当没有set成功
print(type(r.get(&#39;name&#39;)))

淺析Python中怎麼用Redis

以上,就是今天全部的内容,更多信息建议参考 redis 官方文档。

更多编程相关知识,请访问:编程视频!!

以上是淺析Python中怎麼用Redis的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.cn。如有侵權,請聯絡admin@php.cn刪除