Redis入門教程
作者:nosqlfan on 星期五, 七月 23, 2010 · 評論本文 【閱讀:1,425 次】
入門教程,僅供菜鳥。
原文連結:http://lgone.com/html/y2010/776.html
本文包括如下內容:
- Redis簡介
- Redis的效能
- 安裝Redis、Redis啟動參數介紹
- 應用執行個體:利用Redis構建簡單的微博系統(官方例子連結)
[註:入門教程,僅供菜鳥]
1.Redis簡介
Redis是一個key-value儲存系統。和Memcached類似,但是解決了斷電後資料完全丟失的情況,而且她支援更多無化的value類型,除了和string外,還支援lists(鏈表)、sets(集合)和zsets(有序集合)幾種資料類型。這些資料類型都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。
2.Redis的效能
下面是官方的bench-mark資料:
- The test was done with 50 simultaneous clients performing 100000 requests.
- The value SET and GET is a 256 bytes string.
- The Linux box is running Linux 2.6, it’s Xeon X3320 2.5Ghz.
- Text executed using the loopback interface (127.0.0.1).
Results: about 110000 SETs per second, about 81000 GETs per second.
更多詳細資料請見官方bench-mark page(http://code.google.com/p/redis/wiki/Benchmarks)
3.安裝Redis、Redis啟動參數介紹
3.1.安裝Redis
Redis的代碼遵循ANSI-C編寫,可以在所有POSIX系統(如Linux, *BSD, Mac OS X, Solaris等)上安裝運行。而且Redis並不依賴任何非標準庫,也沒有編譯參數必需添加。編譯安裝Redis,我們唯一需要的就是make,下面是安裝過程,使用的是目前的穩定版本1.2.6版,2.0版本目前尚處於開發狀態。
3.1.1.擷取源碼、解壓、進入源碼目錄:
wget http://redis.googlecode.com/files/redis-1.2.6.tar.gztar xzf redis-1.2.6.tar.gzcd redis-1.2.6
3.1.2.編譯產生可執行檔:
由於makefile檔案已經寫好,我們只需要直接在源碼目錄執行make命令進行編譯即可:
make
make命令執行完成後,會在目前的目錄下產生本個可執行檔,分別是redis-server、redis-cli、redis-benchmark、redis-stat,它們的作用如下:
- redis-server:Redis伺服器的daemon啟動程式
- redis-cli:Redis命令列操作工具。當然,你也可以用telnet根據其純文字協議來操作
- redis-benchmark:Redis效能測試工具,測試Redis在你的系統及你的配置下的讀寫效能
- redis-stat:Redis狀態偵查工具,可以檢測Redis目前狀態參數及延遲狀況
3.1.3.建立Redis目錄(非必須)
這個過程不是必須的,只是為了將Redis相關的資源統一管理而進行的操作。
執行以下命令建立相關目錄並拷貝相關檔案至目錄中:
sudo -smkdir -p /usr/local/redis/binmkdir -p /usr/local/redis/etcmkdir -p /usr/local/redis/varcp redis-server redis-cli redis-benchmark redis-stat /usr/local/redis/bin/cp redis.conf /usr/local/redis/etc/
3.2.Redis配置參數詳解
在我們成功安裝Redis後,我們直接執行redis-server即可運行Redis,此時它是按照預設配置來啟動並執行(預設配置甚至不是後台運行)。我們希望Redis按我們的要求運行,則我們需要修改設定檔,Redis的設定檔就是我們上面第二個cp操作的redis.conf檔案,目前它被我們拷貝到了/usr/local/redis/etc/目錄下。修改它就可以配置我們的server了。如何修改?下面是redis.conf的主要配置參數的意義:
- daemonize:是否以後台daemon方式運行
- pidfile:pid檔案位置
- port:監聽的連接埠號碼
- timeout:請求逾時時間
- loglevel:log資訊層級
- logfile:log檔案位置
- databases:開啟資料庫的數量
- save * *:儲存快照的頻率,第一個*表示多長時間,第三個*表示執行多少次寫操作。在一定時間內執行一定數量的寫操作時,自動儲存快照。可設定多個條件。
- rdbcompression:是否使用壓縮
- dbfilename:資料快照檔案名稱(只是檔案名稱,不包括目錄)
- dir:資料快照的儲存目錄(這個是目錄)
- appendonly:是否開啟appendonlylog,開啟的話每次寫操作會記一條log,這會提高資料抗風險能力,但影響效率。
- appendfsync:appendonlylog如何同步到磁碟(三個選項,分別是每次寫都強制調用fsync、每秒啟用一次fsync、不調用fsync等待系統自己同步)
下面是一個略做修改後的設定檔內容:
daemonize yespidfile /usr/local/redis/var/redis.pidport 6379timeout 300loglevel debuglogfile /usr/local/redis/var/redis.logdatabases 16save 900 1save 300 10save 60 10000rdbcompression yesdbfilename dump.rdbdir /usr/local/redis/var/appendonly noappendfsync alwaysglueoutputbuf yesshareobjects noshareobjectspoolsize 1024
將上面內容寫為redis.conf並儲存到/usr/local/redis/etc/目錄下
然後在命令列執行:
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
即可在後台啟動redis服務,這時你通過
telnet 127.0.0.1 6379
即可串連到你的redis服務。
4.利用Redis構建簡單的微博系統
具體例子見官方文檔:
《A case study: Design and implementation of a simple Twitter clone using only the Redis key-value store as database and PHP》