Redis 快速入門(官網(wǎng)翻譯)

原文(http://redis.io/topics/quickstart)

這是一份針對沒有接觸過Redis的人員的快速入門文檔。通過閱讀這份文檔可以幫助你:

  • 下載和編譯Redis
  • 使用redis-cli訪問Redis服務(wù)器
  • 在你的應(yīng)用中使用Redis
  • 了解Redis的持久化是如何工作的
  • 更合理地安裝Redis
  • 發(fā)現(xiàn)下一步去閱讀什么能更多地了解Redis

安裝Redis

推薦通過編譯源碼的方式來安裝Redis,因?yàn)镽edis除了依賴GCC編譯器和libc之外,沒有任何依賴。通過使用你的linux的包管理器來安裝Redis是有些不推薦的,因?yàn)橥ǔ_@樣安裝的可用版本不是最新的。你可以從redis.io下載最新的Reids源碼包或者另外使用一個(gè)總是指向最新穩(wěn)定的Redis版本的網(wǎng)址,這個(gè)網(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

在這時(shí)候,如果你的構(gòu)建過程沒有問題,你可以嘗試輸入make test,但是這是可選。編譯完成后,Redis內(nèi)的src目錄會生成幾個(gè)不同的可執(zhí)行文件,它們是redis的組成部分:

  • redis-server這是Redis服務(wù)器
  • redis-sentinel是Redis的監(jiān)控程序(監(jiān)控和故障轉(zhuǎn)移).
  • redis-cliRedis的命令行客戶端
  • redis-benchmark用于測試Redis的性能
  • redis-check-aofredis-check-dump在特殊情況下數(shù)據(jù)文件損壞的時(shí)候很有用

復(fù)制Redis服務(wù)器和命令行工具到合適的位置是個(gè)好主意,手動使用下面的命令:

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命令的第一個(gè)參數(shù),像下面的例子一樣:

redis-server /etc/redis.conf

你應(yīng)該使用Redis源碼根目錄下的redis.conf作為你的配置文件模板去書寫你的配置文件。

檢查Redis是否在運(yùn)行

外部程序與Redis進(jìn)行交互通過TCP套接字和Redis的特殊協(xié)議。這個(gè)協(xié)議被不同編程語言的Redis客戶端程序所實(shí)現(xiàn)。當(dāng)然為了讓使用Redis更簡單,Redis提供了一個(gè)命令行工具,可以使用這個(gè)工具發(fā)送命令給Redis。這個(gè)程序的名稱是redis-cli。為了檢查Redis是否正常運(yùn)行,第一件事情是使用redis-cli發(fā)送PING命令:

$ redis-cli ping
PONG

運(yùn)行redis-cli后面跟著一個(gè)命令的名稱和命令的參數(shù)將會將該命令傳送給運(yùn)行在localhost且端口號為6379的Redis實(shí)例上。你可以通過redis-cli改變IP和端口,試試使用 --help 選項(xiàng)查看更多的使用信息。
另外一種有趣的運(yùn)行redis-cli的方式是不使用參數(shù):這個(gè)程序會啟動交互模式,你可以輸入不同的命令,查看他們的回復(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命令,這時(shí)候最好暫停閱讀這個(gè)教程,開始學(xué)習(xí)fifteen minutes introduction to Redis data types。當(dāng)然如果你已經(jīng)知道一些Redis的基礎(chǔ)命令,你可以繼續(xù)閱讀。

Redis安全

一般情況下,Redis可以與所有接口綁定,但是都不會做驗(yàn)證。如果你在受控制的環(huán)境中,與外部網(wǎng)絡(luò)和通常的攻擊者分離,使用Redis是好的。然而如果Redis沒有任何強(qiáng)化暴露在互聯(lián)網(wǎng)下,這是一個(gè)大的安全問題。如果你不是百分百確認(rèn)你的環(huán)境是安全的,為了讓Redis更安全,請按下面可以增強(qiáng)安全性的步驟檢查:

  1. 確保Redis用來監(jiān)聽連接的端口(默認(rèn)6379、Redis運(yùn)行在集群模式的默認(rèn)端口16379、監(jiān)控默認(rèn)端口26379)是被防火墻禁止的,這樣就不可能通過外部網(wǎng)絡(luò)訪問Redis。
  2. 為了保證Reids只監(jiān)聽你所使用小部分網(wǎng)絡(luò),可以使用一個(gè)有設(shè)置bind指令的配置文件。比如如果你訪問Redis只是在局部的同一臺計(jì)算機(jī)上,你可以只配置環(huán)回接口(127.0.0.1),等等。
  3. 為了增加一個(gè)附加的安全層,使用requirepass選項(xiàng),這樣客戶端就需要使用AUTH命令進(jìn)行驗(yàn)證。
  4. 如果你的環(huán)境要求加密的話,為了加密Redis服務(wù)器與客戶端之間的流量,可以使用spiped或者其他 SSL隧道軟件。

注意:
Redis在沒有任何安全措施的情況下暴露在互聯(lián)網(wǎng)中是非常容易被利用的,所以確保你理解上面的內(nèi)容,并且使用至少一個(gè)防火墻層。防火墻設(shè)置好后,為了保證Redis服務(wù)器不可訪問,嘗試在其他的主機(jī)上使用redis-cli連接Redis。

在你的應(yīng)用中使用Redis

當(dāng)然通過命令行界面使用Redis是不夠的,因?yàn)槟愕哪繕?biāo)是在你的應(yīng)用中使用它。為了實(shí)現(xiàn)這個(gè),你需要為你的編程語言下載和安裝一個(gè)Redis的客戶端。你將在這個(gè)頁面中看到所有的針對不同編程語言的客戶端。
比如你剛好使用的是Ruby,我們的建議是你最好使用Redis-rb客戶端。你可以使用gem install redis安裝它(同時(shí)也確保安裝了SystemTimer
這些命令是針對Ruby的,但事實(shí)上很多流行語言的客戶端都是相似的:你創(chuàng)建Redis對象和執(zhí)行命令的調(diào)用方法。一個(gè)簡短的使用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持久化

你可以在這個(gè)頁面中學(xué)習(xí)Redis持久化是如何工作的,當(dāng)然對于一個(gè)入門教程來說,最重要的是理解,默認(rèn)情況下,如果你沒有使用配置文件啟動Redis,Redis將會不定時(shí)地自動保存數(shù)據(jù)(比如如果你在你的數(shù)據(jù)中有100次變更至少要5分鐘后),所以如果你想持久化你的數(shù)據(jù)庫并且重啟的時(shí)候可以重新載入數(shù)據(jù),那么你在想強(qiáng)制保存數(shù)據(jù)快照的時(shí)候,確保手動調(diào)用SAVE命令。或者關(guān)閉數(shù)據(jù)庫使用SHUTDOWN命令:

$ redis-cli shutdown

這種方式,Redis將會保證在退出前保存數(shù)據(jù)到磁盤中。為了更好地理解Redis的持久化是如何工作的,強(qiáng)烈建議你閱讀persistence page

更合理地安裝Redis

僅僅在玩一下或者開發(fā)的情況下,在命令行中執(zhí)行Redis是好的。然而在某些時(shí)候你將有一些真實(shí)的應(yīng)用運(yùn)作在正式的服務(wù)器上。對于這種使用,你有2個(gè)不同的選擇:

  • 使用屏幕運(yùn)行Redis
  • 使用一個(gè)初始化腳本用合適的方式安裝Redis在你的Linux服務(wù)器上,這樣子在重啟所有的東西的時(shí)候,Redis將會重新啟動。

使用一個(gè)初始化腳本進(jìn)行安裝是強(qiáng)烈推薦的。下面的命令演示了一次在Debian或者 Ubuntu上,合理使用初始化腳本安裝Redis 2.4的過程。
我們假設(shè)你已經(jīng)復(fù)制redis-serverredis-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目錄找到這個(gè)初始化腳本。我們建議你使用帶有你要運(yùn)行的Redis實(shí)例的端口號的名字來調(diào)用它,比如:

sudo cp utils/redis_init_script /etc/init.d/redis_6379

編輯這個(gè)腳本。

sudo vi /etc/init.d/redis_6379

確保根據(jù)你使用的端口號更改REDISPORT。pid文件路徑和配置文件名稱都依賴于這個(gè)端口號。

  • 復(fù)制在Redis根目錄下找到的配置文件模板到/etc/redis/ 內(nèi),并將名字重命名為你所使用的端口號,比如:
sudo cp redis.conf /etc/redis/6379.conf
  • 在/var/redis內(nèi)創(chuàng)建目錄,這個(gè)目錄作為Redis的數(shù)據(jù)和工作目錄,比如:
sudo mkdir /var/redis/6379
  • 編輯配置文件,確保執(zhí)行下面的變更:
    • 設(shè)置daemonize為 yes (默認(rèn)設(shè)置為no).
    • 設(shè)置pidfile為/var/run/redis_6379.pid
      (如果需要的話可以變更端口).
    • 改變port。在我們的例子中是不需要的,因?yàn)槟J(rèn)端口已經(jīng)是6379。
    • 設(shè)置更合適的日志級別:loglevel.
    • 設(shè)置日志文件為/var/log/redis_6379.log:logfile
    • 設(shè)置dir為/var/redis/6379 (非常重要的一步!)
  • 最好使用下面的命令將新的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實(shí)例
  • 使用redis-cli save做一次存儲測試,然后檢查轉(zhuǎn)儲文件是否正確地存儲在/var/redis/6379/內(nèi)(你應(yīng)該找到一個(gè)叫dump.rdb的文件)
  • 檢查Redis實(shí)例正確地將日志記錄在日志文件中。
  • 如果這是一個(gè)你可以隨意操作的新機(jī)器,確保重啟后Redis還是能正常運(yùn)行

注意: 在上面的指令中我們跳過了很多你可能想去修改的配置參數(shù),比如配置使用AOF方式的持久化而不是RDB方式的持久化、安裝一個(gè)復(fù)制,等等。閱讀redis.conf這個(gè)配置文件示例和其他的你可以在這個(gè)站點(diǎn)找到的文檔去獲取更多的信息。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,750評論 1 375
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內(nèi)容