源地址:http://hanqunfeng.javaeye.com/blog/684108
安裝redis版本爲1.2.6
一。下載redis
下載地址:http://code.google.com/p/redis/downloads/list
選擇redis-1.2.6.tar.gz 將該下載包拷貝到/usr/local/redis下(隨意了,找個地方就好)
二。安裝
cd /usr/local/redis
tar zxvf redis-redis-1.2.6.tar.gz
cd redis-redis-1.2.6
make
由於沒有make install,所以得把源代碼目錄裏的關鍵文件手動複製到適當的位置:
cp redis.conf /etc/ #看到一些資料都是這麼做的,搞不懂爲什麼一定要放到那裏
cp redis-benchmark redis-cli redis-server /usr/bin/ #這個倒是很有用,這樣就不用再執行時加上./了,而且可以在任何地方執行
如果內存情況比較緊張的話,需要設定內核參數:
echo 1 > /proc/sys/vm/overcommit_memory
這裏說一下這個配置的含義:
/proc/sys/vm/overcommit_memory
該文件指定了內核針對內存分配的策略,其值可以是0、1、2。
0, 表示內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,並把錯誤返回給應用進程。
1, 表示內核允許分配所有的物理內存,而不管當前的內存狀態如何。
2, 表示內核允許分配超過所有物理內存和交換空間總和的內存
然後編輯redis.conf配置文件(/etc/redis.conf),按需求做出適當調整,比如:
daemonize yes #轉爲守護進程,否則啓動時會每隔5秒輸出一行監控信息
save 60 1000 #減小改變次數,其實這個可以根據情況進行指定
maxmemory 256000000 #分配256M內存
最後還要開放redis的端口,否則客戶端無法連接。方法如下:
vi /etc/sysconfig/iptables #需要具備其修改權限
增加一行:
# redis
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
保存後重啓iptables:
service iptables restart (PATH中加入了/sbin/)或者 /etc/init.d/iptables restart
三。驗證
1.啓動服務:
redis-server /etc/redis.conf
- [wap@hanqunfeng redis-1.2.6]$ redis-server /etc/redis.conf
- New pid: 12776
查看是否redis已經啓動:
- [wap@hanqunfeng redis-1.2.6]$ ps -ef | grep redis
- wap 12776 1 0 15:15 ? 00:00:00 redis-server /etc/redis.conf
- wap 12782 12751 0 15:17 pts/2 00:00:00 grep redis
2.存取值
- [wap@hanqunfeng redis-1.2.6]$ redis-cli set name value
- OK
- [wap@hanqunfeng redis-1.2.6]$ redis-cli get name
- value
3.關閉服務
- [wap@hanqunfeng redis-1.2.6]$ redis-cli shutdown
如果端口變化可以指定端口: redis-cli -p 6380 shutdown
這時內存中的數據會自動寫入到硬盤,文件地址是在redis.conf裏配置的:
dbfilename dump.rdb
說明:數據備份可以通過定期備份該文件實現。
另外,從網上看到說redis不能將內存數據轉存到硬盤上,這個問題我也遇到了,後來發現是用戶權限的問題,最開始啓動redis我使用的root用戶,後來使用wap用戶就發現不能將數據寫入硬盤,這是因爲dump.rdb已經是root權限了,不知道說redis不能存儲到硬盤的人是不是和我犯了同樣的錯誤。
另外,我發現執行redis-benchmark命令時也會將內存數據寫入硬盤。
redis-benchmark:檢查當前機器的處理性能。
4.重啓服務後再次取值,取值成功
- [wap@hanqunfeng redis-1.2.6]$
- [wap@hanqunfeng redis-1.2.6]$ redis-server /etc/redis.conf
- New pid: 12797
- [wap@hanqunfeng redis-1.2.6]$ redis-cli get name
- value
5.強制保存內存數據到硬盤
因爲redis是異步寫入磁盤的,如果要讓內存中的數據馬上寫入硬盤可以執行如下命令:
redis-cli save 或者 redis-cli -p 6380 save(指定端口)
注意,以上部署操作需要具備一定的權限,比如複製和設定內核參數等。
ok,redis配置完成。