原文(http://redis.io/topics/quickstart)
這是一份針對沒有接觸過Redis的人員的快速入門文檔溅漾。通過閱讀這份文檔可以幫助你:
- 下載和編譯Redis
- 使用redis-cli訪問Redis服務(wù)器
- 在你的應(yīng)用中使用Redis
- 了解Redis的持久化是如何工作的
- 更合理地安裝Redis
- 發(fā)現(xiàn)下一步去閱讀什么能更多地了解Redis
安裝Redis
推薦通過編譯源碼的方式來安裝Redis邑彪,因為Redis除了依賴GCC編譯器和libc之外抢肛,沒有任何依賴春贸。通過使用你的linux的包管理器來安裝Redis是有些不推薦的,因為通常這樣安裝的可用版本不是最新的。你可以從redis.io下載最新的Reids源碼包或者另外使用一個總是指向最新穩(wěn)定的Redis版本的網(wǎng)址叠穆,這個網(wǎng)址是http://download.redis.io/redis-stable.tar.gz.
按照下面的步驟編譯Redis:
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
在這時候,如果你的構(gòu)建過程沒有問題臼膏,你可以嘗試輸入make test硼被,但是這是可選。編譯完成后渗磅,Redis內(nèi)的src目錄會生成幾個不同的可執(zhí)行文件嚷硫,它們是redis的組成部分:
- redis-server這是Redis服務(wù)器
- redis-sentinel是Redis的監(jiān)控程序(監(jiān)控和故障轉(zhuǎn)移).
- redis-cliRedis的命令行客戶端
- redis-benchmark用于測試Redis的性能
- redis-check-aof和redis-check-dump在特殊情況下數(shù)據(jù)文件損壞的時候很有用
復(fù)制Redis服務(wù)器和命令行工具到合適的位置是個好主意,手動使用下面的命令:
sudo cp src/redis-server /usr/local/bin/
sudo cp src/redis-cli /usr/local/bin/
或者直接執(zhí)行
sudo make install
在下面的文檔中我們假設(shè)/usr/local/bin在你的PATH環(huán)境變量中始鱼,這樣就不需要輸入全路徑就可以執(zhí)行所有的二進(jìn)制文件:
$ redis-server
[28550] 01 Aug 19:29:28 # Warning: no config file specified, using the default config. In order to specify a config file use 'redis-server /path/to/redis.conf'
[28550] 01 Aug 19:29:28 * Server started, Redis version 2.2.12
[28550] 01 Aug 19:29:28 * The server is now ready to accept connections on port 6379
... more logs ...
在上面的例子中仔掸,啟動Redis并沒有明確指定配置文件,所以所有的參數(shù)都是使用了默認(rèn)值医清。如果你只是啟動Redis玩一下或者為了開發(fā)起暮,這種啟動方式是完美的,但是對于生產(chǎn)環(huán)境会烙,你需要使用配置文件鞋怀。
為了使用配置文件啟動Redis要將配置文件的全路徑作為啟動redis命令的第一個參數(shù),像下面的例子一樣:
redis-server /etc/redis.conf
你應(yīng)該使用Redis源碼根目錄下的redis.conf作為你的配置文件模板去書寫你的配置文件持搜。
檢查Redis是否在運(yùn)行
外部程序與Redis進(jìn)行交互通過TCP套接字和Redis的特殊協(xié)議。這個協(xié)議被不同編程語言的Redis客戶端程序所實現(xiàn)焙矛。當(dāng)然為了讓使用Redis更簡單葫盼,Redis提供了一個命令行工具,可以使用這個工具發(fā)送命令給Redis村斟。這個程序的名稱是redis-cli贫导。為了檢查Redis是否正常運(yùn)行,第一件事情是使用redis-cli發(fā)送PING命令:
$ redis-cli ping
PONG
運(yùn)行redis-cli后面跟著一個命令的名稱和命令的參數(shù)將會將該命令傳送給運(yùn)行在localhost且端口號為6379的Redis實例上蟆盹。你可以通過redis-cli改變IP和端口匾寝,試試使用 --help 選項查看更多的使用信息空郊。
另外一種有趣的運(yùn)行redis-cli的方式是不使用參數(shù):這個程序會啟動交互模式,你可以輸入不同的命令,查看他們的回復(fù)床三。
$ redis-cli
redis 127.0.0.1:6379> ping
PONG
redis 127.0.0.1:6379> set mykey somevalue
OK
redis 127.0.0.1:6379> get mykey
"somevalue"`
現(xiàn)在你已經(jīng)可以與Redis進(jìn)行交互了。為了學(xué)習(xí)一些Redis命令僻肖,這時候最好暫停閱讀這個教程老翘,開始學(xué)習(xí)fifteen minutes introduction to Redis data types。當(dāng)然如果你已經(jīng)知道一些Redis的基礎(chǔ)命令舔哪,你可以繼續(xù)閱讀欢顷。
Redis安全
一般情況下,Redis可以與所有接口綁定捉蚤,但是都不會做驗證抬驴。如果你在受控制的環(huán)境中炼七,與外部網(wǎng)絡(luò)和通常的攻擊者分離,使用Redis是好的布持。然而如果Redis沒有任何強(qiáng)化暴露在互聯(lián)網(wǎng)下豌拙,這是一個大的安全問題。如果你不是百分百確認(rèn)你的環(huán)境是安全的鳖链,為了讓Redis更安全姆蘸,請按下面可以增強(qiáng)安全性的步驟檢查:
- 確保Redis用來監(jiān)聽連接的端口(默認(rèn)6379、Redis運(yùn)行在集群模式的默認(rèn)端口16379芙委、監(jiān)控默認(rèn)端口26379)是被防火墻禁止的逞敷,這樣就不可能通過外部網(wǎng)絡(luò)訪問Redis。
- 為了保證Reids只監(jiān)聽你所使用小部分網(wǎng)絡(luò)灌侣,可以使用一個有設(shè)置bind指令的配置文件推捐。比如如果你訪問Redis只是在局部的同一臺計算機(jī)上,你可以只配置環(huán)回接口(127.0.0.1)侧啼,等等牛柒。
- 為了增加一個附加的安全層,使用requirepass選項痊乾,這樣客戶端就需要使用AUTH命令進(jìn)行驗證皮壁。
- 如果你的環(huán)境要求加密的話,為了加密Redis服務(wù)器與客戶端之間的流量哪审,可以使用spiped或者其他 SSL隧道軟件蛾魄。
注意:
Redis在沒有任何安全措施的情況下暴露在互聯(lián)網(wǎng)中是非常容易被利用的,所以確保你理解上面的內(nèi)容湿滓,并且使用至少一個防火墻層滴须。防火墻設(shè)置好后,為了保證Redis服務(wù)器不可訪問叽奥,嘗試在其他的主機(jī)上使用redis-cli連接Redis扔水。
在你的應(yīng)用中使用Redis
當(dāng)然通過命令行界面使用Redis是不夠的,因為你的目標(biāo)是在你的應(yīng)用中使用它朝氓。為了實現(xiàn)這個魔市,你需要為你的編程語言下載和安裝一個Redis的客戶端。你將在這個頁面中看到所有的針對不同編程語言的客戶端赵哲。
比如你剛好使用的是Ruby嘹狞,我們的建議是你最好使用Redis-rb客戶端。你可以使用gem install redis安裝它(同時也確保安裝了SystemTimer)
這些命令是針對Ruby的誓竿,但事實上很多流行語言的客戶端都是相似的:你創(chuàng)建Redis對象和執(zhí)行命令的調(diào)用方法磅网。一個簡短的使用Ruby的交互例子:
>> require 'rubygems'
=> false
>> require 'redis'
=> true
>> r = Redis.new
=> #<Redis client v2.2.1 connected to redis://127.0.0.1:6379/0 (Redis v2.3.8)>
>> r.ping
=> "PONG"
>> r.set('foo','bar')
=> "OK"
>> r.get('foo')
=> "bar"`
Redis持久化
你可以在這個頁面中學(xué)習(xí)Redis持久化是如何工作的,當(dāng)然對于一個入門教程來說,最重要的是理解筷屡,默認(rèn)情況下涧偷,如果你沒有使用配置文件啟動Redis簸喂,Redis將會不定時地自動保存數(shù)據(jù)(比如如果你在你的數(shù)據(jù)中有100次變更至少要5分鐘后),所以如果你想持久化你的數(shù)據(jù)庫并且重啟的時候可以重新載入數(shù)據(jù)燎潮,那么你在想強(qiáng)制保存數(shù)據(jù)快照的時候喻鳄,確保手動調(diào)用SAVE命令∪贩猓或者關(guān)閉數(shù)據(jù)庫使用SHUTDOWN命令:
$ redis-cli shutdown
這種方式除呵,Redis將會保證在退出前保存數(shù)據(jù)到磁盤中。為了更好地理解Redis的持久化是如何工作的爪喘,強(qiáng)烈建議你閱讀persistence page
更合理地安裝Redis
僅僅在玩一下或者開發(fā)的情況下颜曾,在命令行中執(zhí)行Redis是好的。然而在某些時候你將有一些真實的應(yīng)用運(yùn)作在正式的服務(wù)器上秉剑。對于這種使用泛豪,你有2個不同的選擇:
- 使用屏幕運(yùn)行Redis
- 使用一個初始化腳本用合適的方式安裝Redis在你的Linux服務(wù)器上,這樣子在重啟所有的東西的時候侦鹏,Redis將會重新啟動诡曙。
使用一個初始化腳本進(jìn)行安裝是強(qiáng)烈推薦的。下面的命令演示了一次在Debian或者 Ubuntu上略水,合理使用初始化腳本安裝Redis 2.4的過程价卤。
我們假設(shè)你已經(jīng)復(fù)制redis-server和redis-cli可執(zhí)行文件到/usr/local/bin下。
- 創(chuàng)建用來存儲你的Redis配置文件和你的數(shù)據(jù)的目錄:
sudo mkdir /etc/redis
sudo mkdir /var/redis
復(fù)制初始化腳本到/etc/init.d內(nèi)渊涝,你可以在Redis安裝目錄下的utils目錄找到這個初始化腳本荠雕。我們建議你使用帶有你要運(yùn)行的Redis實例的端口號的名字來調(diào)用它,比如:
sudo cp utils/redis_init_script /etc/init.d/redis_6379
編輯這個腳本驶赏。
sudo vi /etc/init.d/redis_6379
確保根據(jù)你使用的端口號更改REDISPORT。pid文件路徑和配置文件名稱都依賴于這個端口號既鞠。
- 復(fù)制在Redis根目錄下找到的配置文件模板到/etc/redis/ 內(nèi)煤傍,并將名字重命名為你所使用的端口號,比如:
sudo cp redis.conf /etc/redis/6379.conf
- 在/var/redis內(nèi)創(chuàng)建目錄嘱蛋,這個目錄作為Redis的數(shù)據(jù)和工作目錄蚯姆,比如:
sudo mkdir /var/redis/6379
- 編輯配置文件,確保執(zhí)行下面的變更:
- 設(shè)置daemonize為 yes (默認(rèn)設(shè)置為no).
- 設(shè)置pidfile為/var/run/redis_6379.pid
(如果需要的話可以變更端口). - 改變port洒敏。在我們的例子中是不需要的龄恋,因為默認(rèn)端口已經(jīng)是6379。
- 設(shè)置更合適的日志級別:loglevel.
- 設(shè)置日志文件為/var/log/redis_6379.log:logfile
- 設(shè)置dir為/var/redis/6379 (非常重要的一步P谆铩)
- 最好使用下面的命令將新的Redis初始化腳本加入到所有默認(rèn)的運(yùn)行級別中:
sudo update-rc.d redis_6379 defaults
你已經(jīng)完成了」希現(xiàn)在你可以試試運(yùn)行你的Redis:
sudo /etc/init.d/redis_6379 start
確保所有事情正如你所期望的那樣執(zhí)行:
- 使用redis-cli,ping你的Redis實例
- 使用redis-cli save做一次存儲測試函荣,然后檢查轉(zhuǎn)儲文件是否正確地存儲在/var/redis/6379/內(nèi)(你應(yīng)該找到一個叫dump.rdb的文件)
- 檢查Redis實例正確地將日志記錄在日志文件中显押。
- 如果這是一個你可以隨意操作的新機(jī)器扳肛,確保重啟后Redis還是能正常運(yùn)行
注意: 在上面的指令中我們跳過了很多你可能想去修改的配置參數(shù),比如配置使用AOF方式的持久化而不是RDB方式的持久化乘碑、安裝一個復(fù)制挖息,等等。閱讀redis.conf這個配置文件示例和其他的你可以在這個站點找到的文檔去獲取更多的信息兽肤。