使用Python操做Redis應用場景

1. 安裝pyredispython

首先安裝pipgit

 

 

也能夠使用easy_install的方式來安裝:github

 

 

或者直接編譯安裝:redis

 

 

 

2 . 簡單的redis操做

redis鏈接實例是線程安全的,能夠直接將redis鏈接實例設置爲一個全局變量,直接使用。若是須要另外一個Redis實例(or Redis數據庫)時,就須要從新建立redis鏈接實例來獲取一個新的鏈接。同理,python的redis沒有實現select命令。數據庫

 

 

3. pipeline操做

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

 

 

管道的命令能夠寫在一塊兒,如:安全

 

 

默認的狀況下,管道里執行的命令能夠保證執行的原子性,執行pipe = r.pipeline(transaction=False)能夠禁用這一特性。服務器

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

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

 

 

每當有一個頁面點擊,則使用INCR增長點擊數便可。網站

 

 

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

 

 

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

當有大量類型文檔的對象,文檔的內容都不同時,(即「表」沒有固定的列),能夠使用hash來表達。

 

 

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

在社交網站中,每個圈子(circle)都有本身的用戶羣。經過圈子能夠找到有共同特徵(好比某一體育活動、遊戲、電影等愛好者)的人。當一個用戶加入一個或幾個圈子後,系統能夠向這個用戶推薦圈子中的人。
咱們定義這樣兩個圈子,並加入一些圈子成員。

 

 

#得到某一圈子的成員

 

 

能夠使用集合運算來獲得幾個圈子的共同成員:

 

 

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

Counting Online Users with Redis介紹了這個方法。當咱們須要在頁面上顯示當前的在線用戶時,就能夠使用Redis來完成了。首先得到當前時間(以Unix timestamps方式)除以60,能夠基於這個值建立一個key。而後添加用戶到這個集合中。當超過你設定的最大的超時時間,則將這個集合設爲過時;而當須要查詢當前在線用戶的時候,則將最後N分鐘的集合交集在一塊兒便可。因爲redis鏈接對象是線程安全的,因此能夠直接使用一個全局變量來表示。

 

相關文章
相關標籤/搜索