http://blog.csdn.net/yaoduren/article/details/8739340 html
下載安裝包:mysql
wget http://redis.googlecode.com/files/redis-2.6.12.tar.gz
編譯源程序:linux
解壓安裝包:redis
tar xzf redis-2.6.12.tar.gz
進入解壓後的安裝包目錄:sql
cd tar xzf redis-2.2.12
進行編譯:數據庫
make
編譯後安裝(須要管理員權限):緩存
sudo make install
在進行編譯與安裝後會提示進行測試,因此咱們仍是make test:服務器
make test
若是你的linux環境缺乏tcl8.5以上的支持,test是沒法進行的,這時咱們須要安裝所缺乏的包:數據結構
sudo apt-get install tcl 8.5
安裝完tcl8.5之後,再次進行:併發
make test
等待跑完以後,最後有
\o/ All tests passed without errors!
恭喜你,安裝成功!
若是是一個專業的DBA,那麼實例啓動時會加不少的參數以便使系統運行的很是穩定,這樣就可能會在啓動時在Redis後面加一個參數,以指定配置文件的路徑,就象mysql同樣的讀取啓動配置文件的方式來啓動數據庫。源碼編譯完成後,在redis-2.2.12目錄下有一個redis.conf文件,這個文件便是Redis的配置文件.
Redis支持不少的參數,但都有默認值。
●daemonize:
默認狀況下,redis不是在後臺運行的,若是須要在後臺運行,把該項的值更改成yes。
●pidfile
當Redis在後臺運行的時候,Redis默認會把pid文件放在/var/run/redis.pid,你能夠配置到其餘地址。當運行多個redis服務時,須要指定不一樣的pid文件和端口。
●bind
指定Redis只接收來自於該IP地址的請求,若是不進行設置,那麼將處理全部請求,在生產環境中最好設置該項。
●port
監聽端口,默認爲6379。
●timeout
設置客戶端鏈接時的超時時間,單位爲秒。當客戶端在這段時間內沒有發出任何指令,那麼關閉該鏈接。
●loglevel
log等級分爲4級,debug, verbose, notice, 和warning。生產環境下通常開啓notice。
●logfile
配置log文件地址,默認使用標準輸出,即打印在命令行終端的窗口上。
●databases
設置數據庫的個數,可使用SELECT 命令來切換數據庫。默認使用的數據庫是0。
●save
設置Redis進行數據庫鏡像的頻率。
if(在60秒以內有10000個keys發生變化時){
進行鏡像備份
}else if(在300秒以內有10個keys發生了變化){
進行鏡像備份
}else if(在900秒以內有1個keys發生了變化){
進行鏡像備份
}
●rdbcompression
在進行鏡像備份時,是否進行壓縮。
●dbfilename
鏡像備份文件的文件名。
●dir
數據庫鏡像備份的文件放置的路徑。這裏的路徑跟文件名要分開配置是由於Redis在進行備份時,先會將當前數據庫的狀態寫入到一個臨時文件中,等備份完成時,再把該該臨時文件替換爲上面所指定的文件,而這裏的臨時文件和上面所配置的備份文件都會放在這個指定的路徑當中。
●slaveof
設置該數據庫爲其餘數據庫的從數據庫。
●masterauth
當主數據庫鏈接須要密碼驗證時,在這裏指定。
●requirepass
設置客戶端鏈接後進行任何其餘指定前須要使用的密碼。警告:由於redis速度至關快,因此在一臺比較好的服務器下,一個外部的用戶能夠在一秒鐘進行150K次的密碼嘗試,這意味着你須要指定很是很是強大的密碼來防止暴力破解。
●maxclients
限制同時鏈接的客戶數量。當鏈接數超過這個值時,redis將再也不接收其餘鏈接請求,客戶端嘗試鏈接時將收到error信息。
●maxmemory
設置redis可以使用的最大內存。當內存滿了的時候,若是還接收到set命令,redis將先嚐試剔除設置過expire信息的key,而無論該key的過時時間尚未到達。在刪除時,將按照過時時間進行刪除,最先將要被過時的key將最早被刪除。若是帶有expire信息的key都刪光了,那麼將返回錯誤。這樣,redis將再也不接收寫請求,只接收get請求。maxmemory的設置比較適合於把redis看成於相似memcached的緩存來使用。
●appendonly
默認狀況下,redis會在後臺異步的把數據庫鏡像備份到磁盤,可是該備份是很是耗時的,並且備份也不能很頻繁,若是發生諸如拉閘限電、拔插頭等情況,那麼將形成比較大範圍的數據丟失。因此redis提供了另一種更加高效的數據庫備份及災難恢復方式。開啓append only模式以後,redis會把所接收到的每一次寫操做請求都追加到appendonly.aof文件中,當redis從新啓動時,會從該文件恢復出以前的狀態。可是這樣會形成appendonly.aof文件過大,因此redis還支持了BGREWRITEAOF指令,對appendonly.aof進行從新整理。因此我認爲推薦生產環境下的作法爲關閉鏡像,開啓appendonly.aof,同時能夠選擇在訪問較少的時間天天對appendonly.aof進行重寫一次。
●appendfsync
設置對appendonly.aof文件進行同步的頻率。always表示每次有寫操做都進行同步,everysec表示對寫操做進行累積,每秒同步一次。這個須要根據實際業務場景進行配置。
●vm-enabled
是否開啓虛擬內存支持。由於redis是一個內存數據庫,並且當內存滿的時候,沒法接收新的寫請求,因此在redis 2.0中,提供了虛擬內存的支持。可是須要注意的是,redis中,全部的key都會放在內存中,在內存不夠時,只會把value值放入交換區。這樣保證了雖然使用虛擬內存,但性能基本不受影響,同時,你須要注意的是你要把vm-max-memory設置到足夠來放下你的全部的key。
●vm-swap-file
設置虛擬內存的交換文件路徑。
●vm-max-memory
這裏設置開啓虛擬內存以後,redis將使用的最大物理內存的大小。默認爲0,redis將把他全部的能放到交換文件的都放到交換文件中,以儘可能少的使用物理內存。在生產環境下,須要根據實際狀況設置該值,最好不要使用默認的0。
●vm-page-size
設置虛擬內存的頁大小,若是你的value值比較大,好比說你要在value中放置博客、新聞之類的全部文章內容,就設大一點,若是要放置的都是很小的內容,那就設小一點。
●vm-pages
設置交換文件的總的page數量,須要注意的是,page table信息會放在物理內存中,每8個page就會佔據RAM中的1個byte。總的虛擬內存大小 = vm-page-size * vm-pages。
●vm-max-threads
設置VM IO同時使用的線程數量。由於在進行內存交換時,對數據有編碼和解碼的過程,因此儘管IO設備在硬件上本上不能支持不少的併發讀寫,可是仍是若是你所保存的vlaue值比較大,將該值設大一些,仍是可以提高性能的。
●glueoutputbuf
把小的輸出緩存放在一塊兒,以便可以在一個TCP packet中爲客戶端發送多個響應,具體原理和真實效果我不是很清楚。因此根據註釋,你不是很肯定的時候就設置成yes。
●hash-max-zipmap-entries
在redis 2.0中引入了hash數據結構。當hash中包含超過指定元素個數而且最大的元素沒有超過臨界時,hash將以一種特殊的編碼方式(大大減小內存使用)來存儲,這裏能夠設置這兩個臨界值。
●activerehashing
開啓以後,redis將在每100毫秒時使用1毫秒的CPU時間來對redis的hash表進行從新hash,能夠下降內存的使用。當你的使用場景中,有很是嚴格的實時性須要,不可以接受Redis時不時的對請求有2毫秒的延遲的話,把這項配置爲no。若是沒有這麼嚴格的實時性要求,能夠設置爲yes,以便可以儘量快的釋放內存。