怎麼樣用 Python 玩轉 Redis !過來 咱一塊兒聊聊!

1. 前言

前面兩篇文章聊到了 Python 處理 Mysql、Sqlite 數據庫經常使用方式,本篇文章繼續說另一種比較經常使用的數據存儲方式:Redisweb

Redis:Remote Dictionary Server,即:遠程字典服務,Redis 底層使用 C 語言編寫,是一款開源的、基於內存的 NoSql 數據庫redis

因爲 Redis 性能遠超其餘數據庫,而且支持集羣、分佈式及主從同步等優點,因此常常用於 緩存數據、高速讀寫 等場景sql

本篇文章就聊聊 Python 操做 Redis 正確的姿式數據庫

2. 準備

咱們以在雲服務器 Centos 7.8 安裝 Redis-Server 爲例vim

首先,安裝在雲服務器上 Redis 數據庫緩存


而後,經過 vim 命令修改 Redis 配置文件,打開遠程鏈接,設置鏈接密碼安全

配置文件目錄:/etc/redis.conf服務器

  • bind 更改成 0.0.0.0,允許外網訪問app

  • requirepass 設置一個訪問密碼分佈式


須要指出的是,爲了保證雲服務器數據安全,Redis 開放遠程訪問的時候,必定要增強密碼

接着,啓動 Redis 服務,開啓防火牆和端口,配置雲服務器安全組

默認狀況下,Redis 服務使用的端口號是 6379

另外,須要在雲服務器安全組進行配置,保證 Redis 數據庫能正常鏈接


完成以上操做,咱們就能夠經過 Redis-CLI 或 Redis 客戶端工具進行鏈接了

最後,要使用 Python 操做 Redis,咱們須要使用 pip 安裝一個依賴


3. 實戰

在操做 Redis 中的數據以前,咱們須要利用 Host、端口號、密碼實例化一個 Redis 鏈接對象


接下來咱們以操做字符串、列表、set 集合、zset 集合、哈希表、事務爲例,講講 Python 操做這些數據的方法

一、字符串操做

操做字符串有兩種方式,操做方法分別是:set() 和 mset()

其中:set() 一次只能保存一個值,參數意義以下

  • name:key,表明鍵

  • value:value,待保存的值

  • ex:過時時間,以秒爲單位,若是不設置,則永久不過時;不然,過時則刪除

  • px:過時時間,以毫秒爲單位

  • nx/xx:set 操做是否執行與 name 鍵是否存在有關

獲取值和刪除值的操做方法分別爲:get(Key)、 delete(Key or Keys)


對於多值數據的設置,只須要調用 mset() 方法,將待插入的數據以鍵值對組成一個字典做爲參數便可

同理,Redis 提供了 mget()方法,能夠一次獲取多個鍵的值


二、列表操做

Redis 提供了不少方法用於操做列表,其中比較常見的以下:

  • lpush/rpush:將一個值或多個值插入到列表頭部或尾部,其中,lpush 表明頭部插入;rpush 表明尾部插入數據

  • lset:經過索引,將值插入到列表對應的位置

  • linsert:在列表元素前面或後面插入數據

  • lindex:經過索引獲取列表中的某一個元素,其中,0 表明第一個元素;-1 表明最後一個元素

  • lrange:經過制定起始位置和結束位置,從列表中獲取指定區域的值

  • llen:獲取列表的長度,若是 Key 對應的列表不存在,返回 0

  • lpop:移除並返回列表中的第一個元素

  • rpop:移除並返回列表中的最後一個元素

實例代碼以下:


三、操做 Set 集合

Set 是一個無序的元素集合,集合中的元素不能重複,Redis 一樣提供了不少方法,便於操做 Set 集合

其中,比較經常使用的方法以下:

  • sadd:添加元素到集合中,已經存在集合中的元素將被忽略,若是集合不存在,則新建一個集合

  • scard:返回集合元素的數量

  • smembers:返回集合中全部元素

  • srem:移除集合中一個或多個元素,若是元素不存在則忽略

  • sinter:返回兩個集合的交集,結果依然是一個集合

  • sunion:返回兩個集合的並集

  • sdiff:以第一個集合參數爲標準,返回兩個集合的差集

  • sunionstore:計算兩個集合的並集,保存到一個新的集合中

  • sismember:判斷集合中是否存在某個元素

  • spop:隨機刪除集合中的一個元素,並返回

具體實例代碼以下:



四、操做 zset 集合

zset 集合相比普通 set 集合,是有序的,zset 集合中的元素包含:值和分數,其中分數用於排序

其中,比較經常使用的方法以下:

  • zadd:往集合中新增元素,若是集合不存在,則新建一個集合,而後再插入數據

  • zrange:經過起始點和結束點,返回集合中的元素值(不包含分數);若是設置withscores=True,則返回結果會帶上分數

  • zscore:獲取某一個元素對應的分數

  • zcard:獲取集合中元素個數

  • zrank:獲取元素在集合中的索引

  • zrem:刪除集合中的元素

  • zcount:經過最小值和最大值,判斷分數在這個範圍內的元素個數

實踐代碼以下:


四、操做哈希

哈希表中包含不少鍵值對,而且每個鍵都是惟一的

Redis 操做哈希表,下面這些方法比較經常使用:

  • hset:往哈希表中添加一個鍵值對值

  • hmset:往哈希表中添加多個鍵值對值

  • hget:獲取哈希表中單個鍵的值

  • hmget:獲取哈希表中多個鍵的值列表

  • hgetall:獲取哈希表中種全部的鍵值對

  • hkeys:獲取哈希表中全部的鍵列表

  • hvals:獲取哈表表中全部的值列表

  • hexists:判斷哈希表中,某個鍵是否存在

  • hdel:刪除哈希表中某一個鍵值對

  • hlen:返回哈希表中鍵值對個數

對應的操做代碼以下:



五、操做事務管道

Redis 支持事務管道操做,可以將幾個操做統一提交執行

操做步驟是:

  • 首先,定義一個事務管道

  • 而後經過事務對象去執行一系列操做

  • 提交事務操做,結束事務操做

下面經過一個簡單的例子來講明:


4.最後

本篇文章經過 Python 實現了對 Redis 常見數據的操做,受限於篇幅,無法對 Redis 中一些不經常使用的方法無法進行展開說明

 

此文轉載文,著做權歸做者全部,若有侵權聯繫小編刪除!

原文地址:https://www.tuicool.com/articles/IfiI3mJ

 

須要源代碼或者想了解更多知識的(點擊這裏查看)

相關文章
相關標籤/搜索