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邑彪,因為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-aofredis-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)安全性的步驟檢查:

  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ò)灌侣,可以使用一個有設(shè)置bind指令的配置文件推捐。比如如果你訪問Redis只是在局部的同一臺計算機(jī)上,你可以只配置環(huán)回接口(127.0.0.1)侧啼,等等牛柒。
  3. 為了增加一個附加的安全層,使用requirepass選項痊乾,這樣客戶端就需要使用AUTH命令進(jìn)行驗證皮壁。
  4. 如果你的環(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-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目錄找到這個初始化腳本荠雕。我們建議你使用帶有你要運(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這個配置文件示例和其他的你可以在這個站點找到的文檔去獲取更多的信息兽肤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末套腹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子资铡,更是在濱河造成了極大的恐慌电禀,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件害驹,死亡現(xiàn)場離奇詭異鞭呕,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)宛官,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門葫松,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人底洗,你說我怎么就攤上這事腋么。” “怎么了亥揖?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵珊擂,是天一觀的道長。 經(jīng)常有香客問我费变,道長摧扇,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任挚歧,我火速辦了婚禮扛稽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘滑负。我一直安慰自己在张,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布矮慕。 她就那樣靜靜地躺著帮匾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪痴鳄。 梳的紋絲不亂的頭發(fā)上瘟斜,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼哼转。 笑死明未,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的壹蔓。 我是一名探鬼主播趟妥,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼佣蓉!你這毒婦竟也來了披摄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤勇凭,失蹤者是張志新(化名)和其女友劉穎疚膊,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虾标,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡寓盗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了璧函。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傀蚌。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蘸吓,靈堂內(nèi)的尸體忽然破棺而出善炫,到底是詐尸還是另有隱情,我是刑警寧澤库继,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布箩艺,位于F島的核電站,受9級特大地震影響宪萄,放射性物質(zhì)發(fā)生泄漏艺谆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一拜英、第九天 我趴在偏房一處隱蔽的房頂上張望静汤。 院中可真熱鬧,春花似錦聊记、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至杰捂,卻和暖如春舆床,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工挨队, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留谷暮,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓盛垦,卻偏偏與公主長得像湿弦,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子腾夯,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

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