我們說Redis是一個強大的Key-Value儲存系統,在前面我們已遇到了兩個問題:

1、redis server 啟動後,獨佔程序,能不能修改為後臺服務呢?

2、redis server 服務是單執行緒的,而我的機器是多核的,能不能在同一臺機器上開啟多個例項更充分的利用 cpu 資源呢?但6379埠已經被前一個例項繫結,肯定會有衝突,那能不能修改預設埠呢?

答案是肯定的,redis 提供了靈活的配置方式,一種可以通過配置檔案來配置,另一種你可以在執行時通過 config set 命令來修改配置。

我們先來看看配置檔案吧。

殊不知我們在前面啟動 server 的時候敲的 ./redis-server 命令,如果後面不附加引數,它是按預設配置來啟動 redis 服務的,其實它後面還可以附加一個配置檔案路徑的引數。這個配置檔案在哪?在redis根目錄下有一個redis.conf檔案,這個檔案為了提供了預設的配置和示例。你不要輕易去動這個檔案,除非你非常牛逼。我們還是保險起見先複製一個副本吧。開啟副本我們發現這個檔案真的好大好長啊,全是英文看得我也難受啊,也不見哪座大神幫忙翻譯一下,給個現成的中文版,太自私了吧,哥今天一晚不睡也要給你們一個交代。

太長了,翻譯了一個晚上才搞了一部分出來,不過主要的配置項都翻譯出來了,我後面有時間繼續翻譯。看這裡。記得順便去關注一下我的 restful.data

把這個檔案下載下來後,拷貝到 src 目錄下面,也就是和 redis-server 在同一個目錄,方便我們操作。

我們稍微改一下配置,看看能不能把我們前面提到的兩個問題解決了。

首先我們修改 daemonize 配置項,把它設定為 yes,開啟終端,我們執行一下 redis-server 命令。

zhaoguihuadediannao:~ zhaogh$ cd applications/dev/redis/src

zhaoguihuadediannao:src zhaogh$ ./redis-server ./redis.conf

zhaoguihuadediannao:src zhaogh$ ./redis-cli

127.0.0.1:6379> 

是不是已經不再獨佔程序了,啟動守護程序後,我們仍然可以執行 redis-cli 命令。

先停掉 redis 服務:

127.0.0.1:6379> shutdown

127.0.0.1:6379> quit

zhaoguihuadediannao:src zhaogh$ 

 然後我們修改 port 配置項為 6378,然後再啟動服務:

zhaoguihuadediannao:src zhaogh$ ./redis-server ./redis.conf

zhaoguihuadediannao:src zhaogh$ ./redis-cli

Could not connect to Redis at 127.0.0.1:6379: Connection refused

not connected> 

因為我們修改了預設埠號,已經連不上去了,嘗試加上埠引數。

zhaoguihuadediannao:src zhaogh$ ./redis-cli -p 6378

127.0.0.1:6378> 

成功了連上了。

 篇幅有限,redis.confi 中其他配置項請大家結合註釋去深入的瞭解。

下面介紹另外一種配置方式,通過命令列來配置。

假如說我們不想修改配置檔案來啟動指定埠號的redis服務,我們可以在終端上執行下面的命令:

zhaoguihuadediannao:src zhaogh$ ./redis-server --port 6379 --daemonize yes

zhaoguihuadediannao:src zhaogh$ ./redis-cli -p 6379

127.0.0.1:6379> 

但我還是推薦使用配置檔案的方式。

如果在生產環境裡面需要修改某些配置項,但我們又不想停掉服務,怎麼辦?

Redis允許在執行的過程中,在不重啟伺服器的情況下更改伺服器配置,同時也支援 使用特殊的CONFIG SET和 CONFIG GET命令用程式設計方式查詢並設定配置。

127.0.0.1:6379> config get port

1) "port"

2) "6379"

127.0.0.1:6379> 

127.0.0.1:6379> config set port 6380

(error) ERR Unsupported CONFIG parameter: port

127.0.0.1:6379> 

我試圖直接修改埠號,沒有成功,我是有點想當然了,因為一旦修改埠必然需要重啟服務,重新繫結埠,所以並不是所有的配置項都能在執行時進行修改。

那我們來修改一個允許修改的配置項。

127.0.0.1:6379> config set tcp-keepalive 60

OK

127.0.0.1:6379> 

上面的例子,我把心跳包傳送時間間隔修改成了60秒。你們可以自己嘗試著去修改其他配置項。

技術上有很多事情不是靠看幾篇文章,通過道聽途說就能明白的,想要真正弄清楚,必須要自己親自去嘗試,實踐才是檢驗真理的唯一標準,就像很多朋友給我推薦車一樣,說這車好,那車差,其實自己都沒開過,我發現很多程式設計師嘴上都說的一套一套的,實際做起事來真不行,這樣的人適合做銷售,會忽悠,當然這也是種能力。

下期預告,Redis 的主從複製,敬請期待。