源地址: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.存取值
Java代碼
- [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配置完成。