<b>1.5 正确安裝并啟動redis</b>
通常來說,學習一門技術最好的方法就是實戰,是以在學習redis這樣一個實戰中産生的技術時,首先把它安裝部署起來,值得慶幸的是,相比于很多軟體和工具部署步驟繁雜,redis的安裝不得不說是非常簡單,本節我們将學習如何安裝redis。
在寫本書時,redis 4.0已經釋出rc版,但是大部分公司還都在使用3.0或更早的版本(2.6或2.8),本書所講的内容基于redis 3.0。
<b>1.5.1 安裝redis</b>
1.?在linux上安裝redis
redis能夠相容絕大部分的posix系統,例如linux、os x、openbsd、netbsd和freebsd,其中比較典型的是linux作業系統(例如centos、redhat、ubuntu、debian、os x等)。在linux安裝軟體通常有兩種方法,第一種是通過各個作業系統的軟體管理軟體進行安裝,例如centos有yum管理工具,ubuntu有apt。但是由于redis的更新速度相對較快,而這些管理工具不一定能更新到最新的版本,同時前面提到redis的安裝本身不是很複雜,是以一般推薦使用第二種方式:源碼的方式進行安裝,整個安裝隻需以下六步即可完成,以3.0.7版本為例:
$ wget
http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar xzf redis-3.0.7.tar.gz
$ ln -s redis-3.0.7 redis
$ cd redis
$ make
$ make install
1)下載下傳redis指定版本的源碼壓縮包到目前目錄。
2)解壓縮redis源碼壓縮包。
3)建立一個redis目錄的軟連接配接,指向redis-3.0.7。
4)進入redis目錄。
5)編譯(編譯之前確定作業系統已經安裝gcc)。
6)安裝。
這裡有兩點要注意:第一,第3步中建立了一個redis目錄的軟連結,這樣做是為了不把redis目錄固定在指定版本上,有利于redis未來版本更新,算是安裝軟體的一種好習慣。第二,第6步中的安裝是将redis的相關運作檔案放到/usr/local/bin/下,這樣就可以在任意目錄下執行redis的指令。例如安裝後,可以在任何目錄執行redis-cli –v檢視redis的版本。
$ redis-cli -v
redis-cli 3.0.7
第12章将介紹更多linux配置優化技巧,為redis的良好運作保駕護航。
2.?在windows上安裝redis
redis的官方并不支援微軟的windows作業系統,但是redis作為一款優秀的開源技術吸引到了微軟公司的注意,微軟公司的開源技術組在github上維護一個redis的分支:https://github.com/msopentech/redis。
那為什麼redis的作者沒有開發和維護針對windows使用者的redis版本呢?這裡可以簡單分析一下:首先redis的許多特性都是和作業系統相關的,windows作業系統和linux作業系統有很大的不同,是以會增加維護成本,而且更重要的是大部分公司都在使用linux作業系統,而redis在linux作業系統上的表現已經得到了實踐的驗證。對于使用windows作業系統的讀者,可以通過安裝虛拟機來體驗redis的諸多特性。
對windows版本的redis感興趣的讀者,可以嘗試安裝和部署windows版本的redis,但是本書中的知識和例子不能確定在windows下能夠運作。
<b>1.5.2 配置、啟動、操作、關閉redis</b>
redis安裝之後,src和/usr/local/bin目錄下多了幾個以redis開頭可執行檔案,我們稱之為redis
shell,這些可執行檔案可以做很多事情,例如可以啟動和停止redis、可以檢測和修複redis的持久化檔案,還可以檢測redis的性能。表1-2中分别列出這些可執行檔案的說明。
表1-2 redis可執行檔案說明
可執行檔案 作 用
redis-server 啟動redis
redis-cli redis指令行用戶端
redis-benchmark redis基準測試工具
redis-check-aof redis aof持久化檔案檢測和修複工具
redis-check-dump redis rdb持久化檔案檢測和修複工具
redis-sentinel 啟動redis sentinel
redis持久化和redis sentinel分别在第5章和第9章才會涉及,redis基準測試将在第3章介紹,是以本節隻對redis-server、redis-cli進行介紹。
1.?啟動redis
有三種方法啟動redis:預設配置、運作配置、配置檔案啟動。
(1)預設配置
這種方法會使用redis的預設配置來啟動,下面就是redis-server執行後輸出的相關日志:
$ redis-server
12040:c 11 jun 17:28:39.464 # warning: no
config file specified, using the
default config. in order to specify a config file use ./redis-server
/path/
to/redis.conf
_._
_.-``__ ''-._
_.-`` `. `_.
''-._ redis 3.0.7
(00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
(
' , .-`
| `, ) running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| port: 6379
|
`-._ `._ /
_.-' | pid: 12040
`-._ `-._ `-./
_.-' _.-'
|`-._`-._
`-.__.-' _.-'_.-'|
`-._`-._ _.-'_.-' |
http:// redis.io
`-._ `-._`-.__.-'_.-' _.-'
`-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
12040:m 11 jun 17:28:39.470 # server
started, redis version 3.0.7
12040:m 11 jun 17:28:39.470 * the server is
now ready to accept connections on
port 6379
可以看到直接使用redis-server啟動redis後,會列印出一些日志,通過日志可以看到一些資訊,上例中可以看到:
目前的redis版本的是3.0.7。
redis的預設端口是6379。
redis建議要使用配置檔案來啟動。
因為直接啟動無法自定義配置,是以這種方式是不會在生産環境中使用的。
(2)運作啟動
redis-server加上要修改配置名和值(可以是多對),沒有設定的配置将使用預設配置:
# redis-server --configkey1 configvalue1
--configkey2 configvalue2
例如,如果要用6380作為端口啟動redis,那麼可以執行:
# redis-server --port 6380
雖然運作配置可以自定義配置,但是如果需要修改的配置較多或者希望将配置儲存到檔案中,不建議使用這種方式。
(3)配置檔案啟動
将配置寫到指定檔案裡,例如我們将配置寫到了/opt/redis/redis.conf中,那麼隻需要執行如下指令即可啟動redis:
# redis-server /opt/redis/redis.conf
redis有60多個配置,這裡隻給出一些重要的配置(參見表1-3),其他配置會随着不斷深入學習進行介紹,第14章會将所有的配置說明進行彙總。
表1-3 redis的基礎配置
配置名 配置說明
port 端口
logfile 日志檔案
dir redis工作目錄(存放持久化檔案和日志檔案)
daemonize 是否以守護程序的方式啟動redis
redis目錄下都會有一個redis.conf配置檔案,裡面就是redis的預設配置,通常來講我們會在一台機器上啟動多個redis,并且将配置集中管理在指定目錄下,而且配置不是完全手寫的,而是将redis.conf作為模闆進行修改。
顯然通過配置檔案啟動的方式提供了更大的靈活性,是以大部分生産環境會使用這種方式啟動redis。
2.?redis指令行用戶端
現在我們已經啟動了redis服務,下面将介紹如何使用redis-cli連接配接、操作redis服務。redis-cli可以使用兩種方式連接配接redis伺服器。
第一種是互動式方式:通過redis-cli -h {host} -p {port}的方式連接配接到redis服務,之後所有的操作都是通過互動的方式實作,不需要再執行redis-cli了,例如:
redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> set hello world
ok
127.0.0.1:6379> get hello
"world"
第二種是指令方式:用redis-cli -h ip {host} -p {port} {command}就可以直接得到指令的傳回結果,例如:
redis-cli -h 127.0.0.1 -p 6379 get hello
這裡有兩點要注意:1)如果沒有-h參數,那麼預設連接配接127.0.0.1;如果沒有-p,那麼預設6379端口,也就是說如果-h和-p都沒寫就是連接配接127.0.0.1:6379這個redis執行個體。2)redis-cli是學習redis的重要工具,後面的很多章節都是用它做講解,同時redis-cli還提供了很多有價值的參數,可以幫助解決很多問題,有關于redis-cli的強大功能将在第3章進行詳細介紹。
3.?停止redis服務
redis提供了shutdown指令來停止redis服務,例如要停掉127.0.0.1上6379端口上的redis服務,可以執行如下操作。
$ redis-cli shutdown
可以看到redis的日志輸出如下:
# user requested shutdown... #用戶端發出的shutdown指令
* saving the final rdb snapshot before
exiting.
#儲存rdb持久化檔案(有關redis持久化的特性在1.2節已經進行了簡單的介紹,rdb是redis的一種
持久化方式)
* db saved on disk #将rdb檔案儲存在磁盤上
# redis is now ready to exit, bye bye... #關閉
當使用redis-cli再次連接配接該redis服務時,看到redis已經“失聯”。
$ redis-cli
could not connect to redis at 127.0.0.1:6379:
connection refused
這裡有三點需要注意一下:
1)redis關閉的過程:斷開與用戶端的連接配接、持久化檔案生成,是一種相對優雅的關閉方式。
2)除了可以通過shutdown指令關閉redis服務以外,還可以通過kill程序号的方式關閉掉redis,但是不要粗暴地使用kill
-9 強制殺死redis服務,不但不會做持久化操作,還會造成緩沖區等資源不能被優雅關閉,極端情況會造成aof和複制丢失資料的情況。
3)shutdown還有一個參數,代表是否在關閉redis前,生成持久化檔案:
redis-cli shutdown nosave|save