在現代 Web 開發中,Redis 作為高效能的鍵值資料函式庫,廣泛應用於快取、Session 管理和訊息佇列等場景。本文將引導讀者在 Linux、OS X 和 Windows 等不同作業系統上安裝 Redis,並設定 Python 客戶端以進行資料函式庫操作。Linux 環境下,將著重於從原始碼編譯安裝 Redis 伺服器,並示範如何安裝必要的 Python 函式庫。對於 OS X 系統,我們將採用 Rudix 工具簡化安裝流程,並同樣涵蓋 Python 函式庫的設定步驟。最後,針對 Windows 環境,由於原生支援的限制,我們將探討使用預編譯版本或自行編譯的方案,並提供 Python 連線 Redis 的程式碼範例。

Redis 快速安裝

Redis 是一種高效能的鍵值資料函式庫,廣泛應用於快取、訊息佇列等領域。本章節將介紹如何在 Linux、OS X 和 Windows 等不同作業系統上安裝 Redis 及其 Python 客戶端函式庫。

在 Linux 上安裝 Redis

安裝步驟

  1. 下載 Redis 原始碼 使用 wget 命令下載 Redis 的最新版本:

    ~:$ wget -q http://redis.googlecode.com/files/redis-2.6.9.tar.gz
    
  2. 解壓縮原始碼 使用 tar 命令解壓縮下載的檔案:

    ~:$ tar -xzf redis-2.6.9.tar.gz
    
  3. 編譯 Redis 進入解壓縮後的目錄並執行 make 命令進行編譯:

    ~:$ cd redis-2.6.9/
    ~/redis-2.6.9:$ make
    
  4. 安裝 Redis 使用 sudo make install 命令安裝 Redis:

    ~/redis-2.6.9:$ sudo make install
    
  5. 啟動 Redis 伺服器 使用 redis-server 命令啟動 Redis 伺服器:

    ~/redis-2.6.9:$ redis-server redis.conf
    

安裝 Python 客戶端函式庫

  1. 下載 setuptools 使用 wget 命令下載 ez_setup.py 檔案:

    ~:$ wget -q http://peak.telecommunity.com/dist/ez_setup.py
    
  2. 安裝 setuptools 使用 sudo python ez_setup.py 命令安裝 setuptools:

    ~:$ sudo python ez_setup.py
    
  3. 安裝 Redis 客戶端函式庫 使用 easy_install 命令安裝 Redis 和 hiredis 函式庫:

    ~:$ sudo python -m easy_install redis hiredis
    

程式碼解析

以下是安裝 Redis 的主要步驟程式碼範例:

# 下載 Redis 原始碼
wget -q http://redis.googlecode.com/files/redis-2.6.9.tar.gz

# 解壓縮原始碼
tar -xzf redis-2.6.9.tar.gz

# 編譯和安裝 Redis
cd redis-2.6.9/
make
sudo make install

# 啟動 Redis 伺服器
redis-server redis.conf

內容解密:

  1. 使用 wget 下載 Redis 的特定版本原始碼壓縮檔。
  2. 使用 tar 解壓縮下載的檔案。
  3. 進入解壓縮後的目錄,執行 make 編譯 Redis。
  4. 使用 sudo make install 安裝編譯好的 Redis。
  5. 使用 redis-server 啟動 Redis 伺服器。

在 OS X 上安裝 Redis

使用 Rudix 安裝 Redis

  1. 下載 Rudix 使用 curl 命令下載 Rudix 安裝指令碼:

    ~:$ curl -O http://rudix.googlecode.com/hg/Ports/rudix/rudix.py
    
  2. 安裝 Rudix 和 Redis 使用 sudo python rudix.py install rudixsudo rudix install redis 命令安裝 Rudix 和 Redis:

    ~:$ sudo python rudix.py install rudix
    ~:$ sudo rudix install redis
    
  3. 啟動 Redis 伺服器 使用 redis-server 命令啟動 Redis 伺服器:

    ~:$ redis-server
    

安裝 Python 客戶端函式庫

  1. 安裝 pip 使用 sudo rudix install pip 命令安裝 pip:

    ~:$ sudo rudix install pip
    
  2. 安裝 Redis 客戶端函式庫 使用 sudo pip install redis 命令安裝 Redis 客戶端函式庫:

    ~:$ sudo pip install redis
    

程式碼解析

以下是使用 Rudix 安裝 Redis 的主要步驟程式碼範例:

# 下載 Rudix 安裝指令碼
curl -O http://rudix.googlecode.com/hg/Ports/rudix/rudix.py

# 安裝 Rudix 和 Redis
sudo python rudix.py install rudix
sudo rudix install redis

# 啟動 Redis 伺服器
redis-server

# 安裝 pip 和 Redis 客戶端函式庫
sudo rudix install pip
sudo pip install redis

圖表翻譯:

  graph LR;
    A[下載 Rudix] --> B[安裝 Rudix];
    B --> C[安裝 Redis];
    C --> D[啟動 Redis 伺服器];
    D --> E[安裝 pip];
    E --> F[安裝 Redis 客戶端函式庫];

此圖表呈現了在 OS X 上使用 Rudix 安裝 Redis 的步驟流程。

在 Windows 上安裝 Redis

為何不建議在 Windows 上執行 Redis

Redis 官方並未提供原生支援 Windows 的版本,在 Windows 上執行 Redis 可能會遇到效能和穩定性的問題。因此,除非必要,否則不建議在 Windows 上執行 Redis。

安裝步驟

  1. 下載預編譯的 Windows 二進位制檔案 從可信賴的來源下載預編譯的 Redis Windows 版本。

  2. 啟動 Redis 伺服器 解壓縮下載的檔案並執行 redis-server.exe 以啟動 Redis 伺服器。

  3. 安裝 Python 和 Redis 客戶端函式庫 下載並安裝 Python,然後使用 pip 安裝 Redis 客戶端函式庫:

    pip install redis
    

程式碼解析

以下是安裝 Redis for Windows 的主要步驟程式碼範例(假設使用的是預編譯的二進位制檔案):

# 解壓縮下載的檔案(假設使用7-Zip)
7z x redis-windows.zip -oRedis

# 進入解壓縮後的目錄並啟動 Redis 伺服器
cd Redis
redis-server.exe

在Windows上安裝Redis與Python

A.3 在Windows上安裝Redis的挑戰與解決方案

Windows作業系統不支援Redis所使用的fork系統呼叫,這使得Redis在將資料函式庫儲存到磁碟時面臨挑戰。缺乏fork功能導致Redis無法在不阻塞客戶端的情況下執行某些必要的資料函式庫儲存方法。

近期,微軟已經投入工程資源來解決背景儲存問題,透過使用執行緒來寫入磁碟,而不是依賴分叉的子程式。目前,微軟有一個Redis 2.6的alpha階段分支,但它僅以原始碼形式提供,且微軟並未保證其在生產環境中的適用性。

對於短期內的需求,有一個由Dusan Majkic提供的非官方Redis移植版本,提供了Redis 2.4.5的預編譯二進位制檔案,但它存在先前提到的問題,即Redis在將資料函式庫轉儲到磁碟時會阻塞。

自行編譯Windows上的Redis

如果您需要盡可能最新的Redis版本,您需要自行編譯Redis。最好的選擇是使用微軟的官方移植版本(https://github.com/MSOpenTech/redis/),這需要Microsoft Visual Studio,不過免費的Express 2010版本就足夠了。如果您選擇這條路,請注意微軟並未保證其移植版本在除了開發和測試之外的任何場景中的適用性。

A.3.2 在Windows上安裝Redis

您可以從Dusan Majkic的GitHub頁面下載一個稍微過時的預編譯Redis版本,適用於32位和64位Windows:https://github.com/dmajkic/redis/downloads。下載後,您需要從zip檔案中提取可執行檔。只要您使用的是比Windows XP更新的Windows版本,您就應該能夠在不需要額外軟體的情況下提取Redis。

將32位或64位的Redis版本提取到您選擇的位置後(取決於您的平台和偏好;請記住64位Windows可以執行32位或64位的Redis,但32位Windows只能執行32位的Redis),您可以透過雙擊redis-server可執行檔來啟動Redis。啟動後,您應該會看到一個類別似於圖A.1的視窗。

圖A.1:Windows上執行的Redis

此圖示呈現了在Windows環境中成功啟動Redis伺服器的畫面。

圖表翻譯: 此圖示顯示了Redis伺服器在Windows上的執行狀態,包括伺服器的啟動日誌和相關組態資訊。

A.3.3 在Windows上安裝Python

如果您已經安裝了Python 2.6或2.7,那麼您已經準備好了。如果沒有,您需要下載最新版本的Python 2.7,因為這是目前支援Redis函式庫的最新Python版本。請前往http://www.python.org/download/,選擇適用於Windows的最新2.7系列版本(同樣,根據您的平台選擇32位或64位版本)。下載完成後,您可以透過雙擊下載的.msi檔案來安裝Python。

假設您接受了所有預設的安裝選項,Python應該會被安裝在C:\Python27\。接下來,您只需要安裝Python的Redis函式庫,就可以開始使用Redis與Python了。如果您使用的是Python 2.6,每當書中提到Python27時,您可以使用Python26來代替。

為了幫助您安裝Redis客戶端函式庫,我們將使用setuptools套件中的easy_install工具。因為您可以輕鬆地從命令列下載setuptools。首先,請開啟一個命令提示字元,方法是進入「開始」功能表中的「附件」程式群組,然後點選「命令提示字元」。

安裝Redis客戶端函式庫

C:\Users\josiah>c:\python27\python
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit...
Type "help", "copyright", "credits" or "license" for more information.
>>> from urllib import urlopen
>>> data = urlopen('http://peak.telecommunity.com/dist/ez_setup.py').read()
>>> open('ez_setup.py', 'wb').write(data)
>>> exit()
C:\Users\josiah>c:\python27\python ez_setup.py
Downloading http://pypi.python.org/packages/2.7/s/setuptools/...
[trimmed]
Finished processing dependencies for setuptools==0.6c11
C:\Users\josiah>c:\python27\python -m easy_install redis
Searching for redis
[trimmed]
Finished processing dependencies for redis
C:\Users\josiah>

#### 內容解密:

  1. 首先,我們啟動了Python直譯器,並使用urlopen從指定URL下載ez_setup.py指令碼。
  2. 將下載的指令碼寫入本地檔案ez_setup.py
  3. 執行ez_setup.py以下載並安裝setuptools
  4. 使用easy_install模組來下載並安裝Redis客戶端函式庫。

A.4 初識Redis

安裝好Redis本身後,您需要確保Python具有適當的函式庫來存取Redis。如果您遵循了前面的指示,您可能仍然開啟了一個命令提示字元。在這個命令提示字元中(如果您關閉了舊的,可以開啟一個新的),您將執行Python。(Windows使用者可以參考在設定過程中如何執行Python。)在Python控制檯中,您將嘗試連線到Redis並發出幾個命令,如下一個列表所示。

~:$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import redis
>>> conn = redis.Redis()
>>> conn.set('hello', 'world')
True
>>> conn.get('hello')
'world'

#### 內容解密:

  1. 匯入redis函式庫,它將自動使用hiredis C加速器函式庫(如果可用的話)。
  2. 建立一個到Redis的連線。
  3. 設定一個值並確認它已被設定。
  4. 取得剛才設定的值。

其他執行Python的方式

雖然您可以在標準終端機中執行Python,但有多種其他更「功能齊全」的方式可以擁有Python控制檯。一個基本的編輯器和控制檯稱為Idle,它隨Python一起提供於Windows和OS X上;您也可以在Linux上安裝它(安裝idle-python2.6idle-python2.7套件,視情況而定)。在控制檯中,您可以從命令列執行python -m idlelib.idle,然後Idle應該就會載入。Idle本身是一個相當基本的編輯器和Python控制檯,因此如果您是程式設計新手,它應該是一個溫和的介紹。許多其他人發現IPython是首選的Python控制檯,它提供了令人驚嘆的功能列表。