高性能網站架構設計之緩存篇(3)- Redis 的配置


我們說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 的主從復制,敬請期待。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM