一:先安裝Redis伺服器
redis 是一個高效能的key-value資料庫。 redis的出現,很大程度補償了memcached這類keyvalue儲存的不足,在部 分場合可以對關聯式資料庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP用戶端,使用很方便。問題是這個項目還很新,可能還不足夠穩定,而且沒有在實際的一些大型系統應用的執行個體。此外,缺乏mc中批量get也是比較大的問題,始終批量擷取跟多次擷取的網路開銷是不一樣的。
效能測試結果:
SET操作每秒鐘 110000 次,GET操作每秒鐘 81000 次,伺服器配置如下:
Linux 2.6, Xeon X3320 2.5Ghz.
stackoverflow 網站使用 Redis 做為快取服務器。
安裝過程:
Redis是一種進階key-value資料庫。它跟memcached類似,不過資料可以持久化,而且支援的資料類型很豐富。有字串,鏈表,集 合和有序集合。支援在伺服器端計算集合的並,交和補集(difference)等,還支援多種排序功能。所以Redis也可以被看成是一個資料結構服務 器。
Redis的所有資料都是儲存在記憶體中,然後不週期性通過非同步方式儲存到磁碟上(這稱為“半持久化模式”);也可以把每一次資料變化都寫入到一個append only file(aof)裡面(這稱為“全持久化模式”)。
一、下載最新版
wget http://redis.googlecode.com/files/redis-2.0.0-rc4.tar.gz
二、解壓縮
tar redis-2.0.0-rc4.tar.gz
三、安裝C/C++的編譯組件(非必須)
apt-get install build-essential
四、編譯
cd redis-2.0.0-rc4
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目前狀態參數及延遲狀況
在後面會有這幾個命令的說明,當然是從網上抄的。。。
五、修改設定檔
/etc/sysctl.conf
添加
vm.overcommit_memory=1
重新整理配置使之生效
sysctl vm.overcommit_memory=1
補充介紹:
**如果記憶體情況比較緊張的話,需要設定核心參數:
echo 1 > /proc/sys/vm/overcommit_memory
核心參數說明如下:
overcommit_memory檔案指定了核心針對記憶體配置的策略,其值可以是0、1、2。
0, 表示核心將檢查是否有足夠的可用記憶體供應用進程使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用進程。
1, 表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
2, 表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體
**編輯redis.conf設定檔(/etc/redis.conf),按需求做出適當調整,比如:
daemonize yes #轉為守護進程,否則啟動時會每隔5秒輸出一行監控資訊
save 60 1000 #減小改變次數,其實這個可以根據情況進行指定
maxmemory 256000000 #分配256M記憶體
在我們成功安裝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 yes
pidfile /usr/local/redis/var/redis.pid
port 6379
timeout 300
loglevel debug
logfile /usr/local/redis/var/redis.log
databases 16
save 900 1
save 300 10
save 60 10000
rdbcompression yes
dbfilename dump.rdb
dir /usr/local/redis/var/
appendonly no
appendfsync always
glueoutputbuf yes
shareobjects no
shareobjectspoolsize 1024
將上面內容寫為redis.conf並儲存到/usr/local/redis/etc/目錄下
然後在命令列執行:
1 |
/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf |
即可在後台啟動redis服務,這時你通過
即可串連到你的redis服務。
六、啟動服務並驗證
啟動伺服器
./redis-server
或
$redis-server /etc/redis.conf
查看是否成功啟動
$ ps -ef | grep redis
或
./redis-cli ping
PONG
七、啟動命令列用戶端賦值取值
redis-cli set mykey somevalue
./redis-cli get mykey
八、關閉服務
$ redis-cli shutdown
#關閉指定連接埠的redis-server
$redis-cli -p 6380 shutdown
九、用戶端也可以使用telnet形式串連。
[root@dbcache conf]# telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to dbcache (127.0.0.1).
Escape character is '^]'.
set foo 3
bar
+OK
get foo
$3
bar
^]
telnet> quit
Connection closed.
官網的手冊http://redis.io/topics/quickstart
二:npm install redis
是安裝Redis的Node.js用戶端,
這樣Node.js程式就可以串連到Redis伺服器並進行操作;