
?
1. 前言
前面兩篇文章聊到了 Python 處理 Mysql、Sqlite 資料庫常用方式,本篇文章繼續說另外一種比較常用的資料存盤方式:Redis
Redis:Remote Dictionary Server,即:遠程字典服務,Redis 底層使用 C 語言撰寫,是一款開源的、基于記憶體的 NoSql 資料庫
由于 Redis 性能遠超其他資料庫,并且支持集群、分布式及主從同步等優勢,所以經常用于 快取資料、高速讀寫 等場景
本篇文章就聊聊 Python 操作 Redis 正確的姿勢
2. 準備
我們以在云服務器 Centos 7.8 安裝 Redis-Server 為例
首先,安裝在云服務器上 Redis 資料庫

?
然后,通過 vim 命令修改 Redis 組態檔,打開遠程連接,設定連接密碼
組態檔目錄:/etc/redis.conf
-
bind 更改為 0.0.0.0,容許外網訪問
-
requirepass 設定一個訪問密碼

?
需要指出的是,為了保證云服務器資料安全,Redis 開放遠程訪問的時候,一定要加強密碼
接著,啟動 Redis 服務,開啟防火墻和埠,配置云服務器安全組
默認情況下,Redis 服務使用的埠號是 6379
另外,需要在云服務器安全組進行配置,保證 Redis 資料庫能正常連接

?
完成以上操作,我們就可以通過 Redis-CLI 或 Redis 客戶端工具進行連接了
最后,要使用 Python 操作 Redis,我們需要使用 pip 安裝一個依賴

?
3. 實戰
在操作 Redis 中的資料之前,我們需要利用 Host、埠號、密碼實體化一個 Redis 連接物件

?
接下來我們以操作字串、串列、set 集合、zset 集合、哈希表、事務為例,講講 Python 操作這些資料的方法
1、字串操作
操作字串有兩種方式,操作方法分別是:set() 和 mset()
其中:set() 一次只能保存一個值,引數意義如下
-
name:key,代表鍵
-
value:value,待保存的值
-
ex:過期時間,以秒為單位,如果不設定,則永久不過期;否則,過期則洗掉
-
px:過期時間,以毫秒為單位
-
nx/xx:set 操作是否執行與 name 鍵是否存在有關

?
獲取值和洗掉值的操作方法分別為:get(Key)、 delete(Key or Keys)

?
對于多值資料的設定,只需要呼叫 mset() 方法,將待插入的資料以鍵值對組成一個字典作為引數即可
同理,Redis 提供了 mget()方法,可以一次獲取多個鍵的值

?
2、串列操作
Redis 提供了很多方法用于操作串列,其中比較常見的如下:
-
lpush/rpush:將一個值或多個值插入到串列頭部或尾部,其中,lpush 代表頭部插入;rpush 代表尾部插入資料
-
lset:通過索引,將值插入到串列對應的位置
-
linsert:在串列元素前面或后面插入資料
-
lindex:通過索引獲取串列中的某一個元素,其中,0 代表第一個元素;-1 代表最后一個元素
-
lrange:通過制定起始位置和結束位置,從串列中獲取指定區域的值
-
llen:獲取串列的長度,如果 Key 對應的串列不存在,回傳 0
-
lpop:移除并回傳串列中的第一個元素
-
rpop:移除并回傳串列中的最后一個元素
實體代碼如下:

?
3、操作 Set 集合
Set 是一個無序的元素集合,集合中的元素不能重復,Redis 同樣提供了很多方法,便于操作 Set 集合
其中,比較常用的方法如下:
-
sadd:添加元素到集合中,已經存在集合中的元素將被忽略,如果集合不存在,則新建一個集合
-
scard:回傳集合元素的數量
-
smembers:回傳集合中所有元素
-
srem:移除集合中一個或多個元素,如果元素不存在則忽略
-
sinter:回傳兩個集合的交集,結果依然是一個集合
-
sunion:回傳兩個集合的并集
-
sdiff:以第一個集合引數為標準,回傳兩個集合的差集
-
sunionstore:計算兩個集合的并集,保存到一個新的集合中
-
sismember:判斷集合中是否存在某個元素
-
spop:隨機洗掉集合中的一個元素,并回傳
具體實體代碼如下:

?

?
4、操作 zset 集合
zset 集合相比普通 set 集合,是有序的,zset 集合中的元素包含:值和分數,其中分數用于排序
其中,比較常用的方法如下:
-
zadd:往集合中新增元素,如果集合不存在,則新建一個集合,然后再插入資料
-
zrange:通過起始點和結束點,回傳集合中的元素值(不包含分數);如果設定withscores=True,則回傳結果會帶上分數
-
zscore:獲取某一個元素對應的分數
-
zcard:獲取集合中元素個數
-
zrank:獲取元素在集合中的索引
-
zrem:洗掉集合中的元素
-
zcount:通過最小值和最大值,判斷分數在這個范圍內的元素個數
實踐代碼如下:

?
4、操作哈希
哈希表中包含很多鍵值對,并且每一個鍵都是唯一的
Redis 操作哈希表,下面這些方法比較常用:
-
hset:往哈希表中添加一個鍵值對值
-
hmset:往哈希表中添加多個鍵值對值
-
hget:獲取哈希表中單個鍵的值
-
hmget:獲取哈希表中多個鍵的值串列
-
hgetall:獲取哈希表中種所有的鍵值對
-
hkeys:獲取哈希表中所有的鍵串列
-
hvals:獲取哈表表中所有的值串列
-
hexists:判斷哈希表中,某個鍵是否存在
-
hdel:洗掉哈希表中某一個鍵值對
-
hlen:回傳哈希表中鍵值對個數
對應的操作代碼如下:

?

?
5、操作事務管道
Redis 支持事務管道操作,能夠將幾個操作統一提交執行
操作步驟是:
-
首先,定義一個事務管道
-
然后通過事務物件去執行一系列操作
-
提交事務操作,結束事務操作
下面通過一個簡單的例子來說明:

?
4.最后
本篇文章通過 Python 實作了對 Redis 常見資料的操作,受限于篇幅,沒法對 Redis 中一些不常用的方法沒法進行展開說明
此文轉載文,著作權歸作者所有,如有侵權聯系小編洗掉!
原文地址:https://www.tuicool.com/articles/IfiI3mJ
需要源代碼或者想了解更多知識的(點擊這里查看)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/143233.html
標籤:Python
