# 1. 安裝與配置
#### 1. 介紹
> Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and message broker.
這是官方的定義。說它是一個數據庫,且是把數據存到內存中,能用作cache(緩存)和消息隊列。說到數據庫,可能大家用得最多的是關系型數據庫,比如MySQL,PostgreSQL等。這種數據庫是把數據存到磁盤中的,這種能存大量的數據,然而我們的應用是經常需要訪問數據庫來查找數據,每次訪問,無論怎樣,都是需要消耗CPU和IO等待。當應用的數據積累到很龐大時,這種性能的問題更嚴重,所以有一種解決方法是這樣的,把經常被訪問的數據放到內存中,因為內存的訪問速度比磁盤快太多了,而這部分數據可能不會是全部的數據,因為內存的價格比磁盤貴多了。所以有了memcached,這種就是把數據放到內存中,但它支持一種最簡單的數據結構,就是鍵值對,這種數據庫又不同于傳統結構型的關系型數據庫,所以又被稱為nosql。
而redis也是nosql的一種,但它相比memcached不僅支持鍵值對,還支持列表,集合,排序集合等結構,而且它還是可持久化的。持久化就是說在內存中的數據會以文件的形式同步到磁盤中,當下次重啟時還能恢復,這點相比memcached,就能存相對重要的數據,畢竟,如果數據不能持久化,丟失了也是件麻煩的事,誰也保證不了不會出問題。
還有一個很重要的特征就是redis支持分布式集群,用它可以輕易地部署到多臺機器中,成為一個集群。特別是3.0開始,redis對集群的支持比較健全了。
redis比較常見的作用,第一個是cache,這是由于它的數據存在內存中,訪問速度比較快,它能讓數據在一定時間后過期,且又有豐富的數據結構的支持,所以它能作為一個高性能的cache。第二個是作為消息隊列,用的是它的sub/pub的功能,能具有消息費生產者的模式,且是數據存在內存中,訪問速度高。

#### 2. 安裝
比較常見的有兩種安裝方式,第一是命令安裝,第二是源碼編譯安裝。命令安裝可能并不會安裝到最新的版本,因為軟件源的redis版本也未必是最新的,但是勝在方面快速。
如果是ubuntu系統,可以這樣。
##### 2.1 命令安裝
如果是ubuntu系統,可以這樣。
```
$ sudo apt-get install redis-server
```
mac系統用以下命令。
```
$ brew install redis
```
##### 2.2 編譯安裝
首先下載官方穩定版的tar包。
```
$ wget http://download.redis.io/releases/redis-3.0.5.tar.gz
```
解壓縮編譯安裝。
```
$ tar xvf redis-3.0.5.tar.gz
$ cd redis-3.0.5
$ make
$ sudo make install
```
這樣就安裝好了,接下來啟動服務器。
```
$ src/redis-server
```
測試。
```
src/redis-cli
redis> set foo bar
OK
redis> get foo
"bar"
```

這樣很不方便。每次都要進到那個目錄才能執行redis-server或redis-cli。
其實redis的源碼提供了一個工具,讓你能夠使用類似`/etc/init.d/server start`這樣的命令來啟動redis服務。
只要運行utils目錄下的install\_server.sh腳本文件就好了。
```
$ cd utils
$ sudo ./install_server.sh
```
#### 3. 配置文件
正如大多數的linux服務一樣,都是通過配置文件來改變應用的特性的。redis的配置文件一般是`/etc/redis/redis.conf`。
打開該文件,里面有很多詳細的注釋,解決了每個參數的意義和用法。
有一些配置項可常見于大多數linux服務,比如指定pid文件的位置,指定port(端口),日志等。
除了這些,還有一些是redis特有的,我們只是對配置文件有個大局的掌握,先介紹兩個比較重要,其他的留待后緒介紹具體功能的時候再來介紹。
假如現在你裝好了redis服務,放在了遠程服務器上,這個時候有個安全問題要注意,那就關于登錄的。
默認情況下redis是不用密碼就能登錄的,即使是在遠程上,所以很不安全。我們要設置一下。
在配置文件中把下面一行開啟就好了。
```
bind 127.0.0.1
```
這代表redis和你本機的linux機器綁定在一起,只有那臺linux機器才能登錄。
還有另一個問題,就是關于內存的。作為緩存服務器,如果不加以限制內存的話,就很有可能出現將整臺服務器內存都耗光的情況,可以在redis的配置文件里面設置。
```
# 限定最多使用1.5GB內存
maxmemory 1536mb
```
另外,當你的redis已經在用了,這個時候你又要改配置,就是需要類似重新加載配置文件的功能。
而redis也提供了`CONFIG SET`和`CONFIG GET`功能,這個可以在線上更改redis的配置。
完結。