使用Python操作Redis


1. 安裝pyredis

首先安裝pip

 

 

也可以使用easy_install的方式來安裝:

 

 

或者直接編譯安裝:

 

 

 

2 . 簡單的redis操作

redis連接實例是線程安全的,可以直接將redis連接實例設置為一個全局變量,直接使用。如果需要另一個Redis實例(or Redis數據庫)時,就需要重新創建redis連接實例來獲取一個新的連接。同理,python的redis沒有實現select命令。

 

 

3. pipeline操作

管道(pipeline)是redis在提供單個請求中緩沖多條服務器命令的基類的子類。它通過減少服務器-客戶端之間反復的TCP數據庫包,從而大大提高了執行批量命令的功能。

 

 

管道的命令可以寫在一起,如:

 

 

默認的情況下,管道里執行的命令可以保證執行的原子性,執行pipe = r.pipeline(transaction=False)可以禁用這一特性。

4. 應用場景 – 頁面點擊數

《Redis Cookbook》對這個經典場景進行詳細描述。假定我們對一系列頁面需要記錄點擊次數。例如論壇的每個帖子都要記錄點擊次數,而點擊次數比回帖的次數的多得多。如果使用關系數據庫來存儲點擊,可能存在大量的行級鎖爭用。所以,點擊數的增加使用redis的INCR命令最好不過了。
當redis服務器啟動時,可以從關系數據庫讀入點擊數的初始值(1237這個頁面被訪問了34634次)

 

 

每當有一個頁面點擊,則使用INCR增加點擊數即可。

 

 

頁面載入的時候則可直接獲取這個值

 

 

5. 使用hash類型保存多樣化對象

當有大量類型文檔的對象,文檔的內容都不一樣時,(即“表”沒有固定的列),可以使用hash來表達。

 

 

6. 應用場景 – 社交圈子數據

在社交網站中,每一個圈子(circle)都有自己的用戶群。通過圈子可以找到有共同特征(比如某一體育活動、游戲、電影等愛好者)的人。當一個用戶加入一個或幾個圈子后,系統可以向這個用戶推薦圈子中的人。
我們定義這樣兩個圈子,並加入一些圈子成員。

 

 

#獲得某一圈子的成員

 

 

可以使用集合運算來得到幾個圈子的共同成員:

 

 

7. 應用場景 – 實時用戶統計

Counting Online Users with Redis介紹了這個方法。當我們需要在頁面上顯示當前的在線用戶時,就可以使用Redis來完成了。首先獲得當前時間(以Unix timestamps方式)除以60,可以基於這個值創建一個key。然后添加用戶到這個集合中。當超過你設定的最大的超時時間,則將這個集合設為過期;而當需要查詢當前在線用戶的時候,則將最后N分鍾的集合交集在一起即可。由於redis連接對象是線程安全的,所以可以直接使用一個全局變量來表示。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM