linux下redis的安裝

 

源地址: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

  1. [wap@hanqunfeng redis-1.2.6]$ redis-server /etc/redis.conf   
  2. New pid: 12776  

查看是否redis已經啓動: 

  1. [wap@hanqunfeng redis-1.2.6]$ ps -ef | grep redis  
  2. wap      12776     1  0 15:15 ?        00:00:00 redis-server /etc/redis.conf  
  3. wap      12782 12751  0 15:17 pts/2    00:00:00 grep redis  

 

 2.存取值

Java代碼 
  1. [wap@hanqunfeng redis-1.2.6]$ redis-cli set name value  
  2. OK  
  3. [wap@hanqunfeng redis-1.2.6]$ redis-cli get name  
  4. value  

 

3.關閉服務

  1. [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.重啓服務後再次取值,取值成功

  1. [wap@hanqunfeng redis-1.2.6]$   
  2. [wap@hanqunfeng redis-1.2.6]$ redis-server /etc/redis.conf   
  3. New pid: 12797  
  4. [wap@hanqunfeng redis-1.2.6]$ redis-cli get name  
  5. value  

 

5.強制保存內存數據到硬盤

因爲redis是異步寫入磁盤的,如果要讓內存中的數據馬上寫入硬盤可以執行如下命令:

redis-cli save 或者 redis-cli -p 6380 save(指定端口)

 

注意,以上部署操作需要具備一定的權限,比如複製和設定內核參數等。

 

ok,redis配置完成。

 

 

發佈了77 篇原創文章 · 獲贊 3 · 訪問量 62萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章