1. 程式人生 > >Linux中安裝redis

Linux中安裝redis

一、Redis介紹

Redis是當前比較熱門的NOSQL系統之一,它是一個key-value儲存系統。和Memcache類似,但很大程度補償了Memcache的不足,它支援儲存的value型別相對更多,包括string、list、set、zset和hash。這些資料型別都支援push/pop、add/remove及取交集並集和差集及更豐富的操作。在此基礎上,Redis支援各種不同方式的排序。
和Memcache一樣,Redis資料都是快取在計算機記憶體中,不同的是,Memcache只能將資料快取到記憶體中,無法自動定期寫入硬碟,這就表示,一斷電或重啟,記憶體清空,資料丟失。所以Memcache的應用場景適用於快取無需持久化的資料。而Redis不同的是它會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,實現資料的持久化。

二、Redis的安裝

下面介紹在Linux環境下,Redis的安裝與部署

1、首先上官網下載Redis 壓縮包,地址:http://redis.io/download 下載穩定版3.0.7即可。

2、通過遠端管理工具,將壓縮包拷貝到Linux伺服器中,執行解壓操作

 

3、執行make 對Redis解壓後文件進行編譯

 

編譯完成之後,可以看到解壓檔案redis-3.0.7 中會有對應的src、conf等資料夾,這和windows下安裝解壓的檔案一樣,大部分安裝包都會有對應的類檔案、配置檔案和一些命令檔案。

 

4、編譯成功後,進入src資料夾,執行make install進行Redis安裝

5、安裝完成,介面如下

 

三、Redis的部署

安裝成功後,下面對Redis 進行部署

安裝完後再Redis的檔案中有redis.conf檔案和src檔案,src檔案中有redis-server和redis-cli,這是用來啟動redis服務的。

redis.conf是配置檔案。

2、執行Redis-server 命令,啟動Redis 服務

 

注意:這裡直接執行Redis-server 啟動的Redis服務,是在前臺直接執行的(效果如上圖),也就是說,執行完該命令後,如果Lunix關閉當前會話,則Redis服務也隨即關閉。正常情況下,啟動Redis服務需要從後臺啟動,並且指定啟動配置檔案。 

3、後臺啟動redis服務

a)首先編輯conf檔案,將daemonize屬性改為yes(表明需要在後臺執行)


Vi redis.conf

 將daemonize的值改為yes

  


b)再次啟動redis服務,並指定啟動服務配置檔案

redis-server     /redis/redis.conf

客戶端連線

/redis/src/redis-cli 

  

9、停止redis例項

  /redis/redis-cli shutdown

  或者

  pkill redis-server

10、讓redis開機自啟

  vim /etc/rc.local

  加入

  /redis/src/redis-server /redis/redis-conf

11、接下來我們看看/usr/local/redis/bin目錄下的幾個檔案時什麼

  redis-benchmark:redis效能測試工具

  redis-check-aof:檢查aof日誌的工具

  redis-check-dump:檢查rdb日誌的工具

  redis-cli:連線用的客戶端

  redis-server:redis服務程序

Redis的配置

  daemonize:如需要在後臺執行,把該項的值改為yes

  pdifile:把pid檔案放在/var/run/redis.pid,可以配置到其他地址

  bind:指定redis只接收來自該IP的請求,如果不設定,那麼將處理所有請求,在生產環節中最好設定該項

  port:監聽埠,預設為6379

  timeout:設定客戶端連線時的超時時間,單位為秒

  loglevel:等級分為4級,debug,revbose,notice和warning。生產環境下一般開啟notice

  logfile:配置log檔案地址,預設使用標準輸出,即列印在命令列終端的埠上

  database:設定資料庫的個數,預設使用的資料庫是0

  save:設定redis進行資料庫映象的頻率

  rdbcompression:在進行映象備份時,是否進行壓縮

  dbfilename:映象備份檔案的檔名

  dir:資料庫映象備份的檔案放置的路徑

  slaveof:設定該資料庫為其他資料庫的從資料庫

  masterauth:當主資料庫連線需要密碼驗證時,在這裡設定

  requirepass:設定客戶端連線後進行任何其他指定前需要使用的密碼

  maxclients:限制同時連線的客戶端數量

  maxmemory:設定redis能夠使用的最大記憶體

  appendonly:開啟appendonly模式後,redis會把每一次所接收到的寫操作都追加到appendonly.aof檔案中,當redis重新啟動時,會從該檔案恢復出之前的狀態

  appendfsync:設定appendonly.aof檔案進行同步的頻率

  vm_enabled:是否開啟虛擬記憶體支援

  vm_swap_file:設定虛擬記憶體的交換檔案的路徑

  vm_max_momery:設定開啟虛擬記憶體後,redis將使用的最大實體記憶體的大小,預設為0

  vm_page_size:設定虛擬記憶體頁的大小

  vm_pages:設定交換檔案的總的page數量

  vm_max_thrrads:設定vm IO同時使用的執行緒數量

出現問題描述: 
1.Could not get a resource from the pool, Connection refused: connect

這裡寫圖片描述

windows java這邊客戶端連結被拒接了,想想問題

1.Vmware裡面的linux所安裝的redis已經正常啟動 
2.在windows用ssh客戶端連結linux可以操作redis 
3.linux防火牆已經關閉 
4.拼linux的ip也能拼通

按理說應該沒問題,下利用telnet測試下埠

telnet 192.168.0.104 6379

發現埠不能拼通,但是linu下其他的埠能拼通,說明就是redis自身配置的問題了

看了下配置檔案,發現配置檔案綁定了本地ip,該配置會導致,其他ip登入被拒絕,所以我們把它註釋掉

這裡寫圖片描述

接下來再測試執行,發先已經連結上了,說明問題解決,但是又出現新的問題 :DENIED Redis is running in protected mode because protected mode is enabled…

這裡寫圖片描述

該問題說,redis目前處於受保護模式,不允許非本地客戶端連結,我們可以通過給redis設定密碼,然後客戶端連結的時候,寫上密碼就可以解決了

這裡寫圖片描述

配置redis的命令 
config set requirepass 123 ->123是密碼

現在java客戶端通過配置主機ip號,密碼就能連結上了