CentOS下Redis 2.2.14安裝配置詳解

來源:互聯網
上載者:User
一、 下載redis最新版本2.2.14      

cd /usr/local/src

wget –c http://redis.googlecode.com/files/redis-2.2.14.tar.gz

二、 編譯安裝redis

tar zxvf redis-2.2.14.tar.gz

cd redis-2.2.14

make

make命令執行完成後,會在src目錄下產生5個可執行檔,分別是redis-server、redis-cli、redis-benchmark、redis-check-aof、redis-check-dump,它們的作用如下:
redis-server:Redis伺服器的daemon啟動程式
redis-cli:Redis命令列操作工具。當然,你也可以用telnet根據其純文字協議來操作
redis-benchmark:Redis效能測試工具,測試Redis在你的系統及你的配置下的讀寫效能
redis-check-aof:更新日誌檢查

redis-check-dump:用於本機資料庫檢查

安裝:

make PREFIX=/usr/local install

 

三、 配置 Redis

 

mkdir /etc/redis

cp redis.conf /etc/redis/redis.conf

mkdir  /var/lib/redis

可從此處下載修改好的redis.conf 下載

 

1. redis.conf 配置參數:

#是否作為守護進程運行

daemonize yes

#如以後台進程運行,則需指定一個pid,預設為/var/run/redis.pid

pidfile redis.pid

#綁定主機IP,預設值為127.0.0.1

#bind 127.0.0.1

#Redis預設監聽連接埠

port 6379

#用戶端閑置多少秒後,中斷連線,預設為300(秒)

timeout 300

#日誌記錄等級,有4個可選值,debug,verbose(預設值),notice,warning

loglevel verbose

#指定日誌輸出的檔案名稱,預設值為stdout,也可設為/dev/null屏蔽日誌

logfile stdout

#可用資料庫數,預設值為16,預設資料庫為0

databases 16

#儲存資料到disk的策略

#當有一條Keys資料被改變是,900秒重新整理到disk一次

save 900 1

#當有10條Keys資料被改變時,300秒重新整理到disk一次

save 300 10

#當有1w條keys資料被改變時,60秒重新整理到disk一次

save 60 10000

#當dump .rdb資料庫的時候是否壓縮資料對象

rdbcompression yes

#本機資料庫檔案名稱,預設值為dump.rdb

dbfilename dump.rdb

#本機資料庫存放路徑,預設值為 ./

dir /var/lib/redis/

########### Replication #####################

#Redis的複製配置

# slaveof <masterip> <masterport> 當本機為從服務時,設定主服務的IP及連接埠

# masterauth <master-password> 當本機為從服務時,設定主服務的串連密碼

#串連密碼

# requirepass foobared

#最大用戶端串連數,預設不限制

# maxclients 128

#最大記憶體使用量設定,達到最大記憶體設定後,Redis會先嘗試清除已到期或即將到期的Key,當此方法處理後,任到達最大記憶體設定,將無法再進行寫入操作。

# maxmemory <bytes>

#是否在每次更新操作後進行日誌記錄,如果不開啟,可能會在斷電時導致一段時間內的資料丟失。因為redis本身同步資料檔案是按上面save條件來同步的,所以有的資料會在一段時間內只存在於記憶體中。預設值為no

appendonly no

#更新記錄檔名,預設值為appendonly.aof

#appendfilename

#更新日誌條件,共有3個可選值。no表示等作業系統進行資料緩衝同步到磁碟,always表示每次更新操作後手動調用fsync()將資料寫到磁碟,everysec表示每秒同步一次(預設值)。

# appendfsync always

appendfsync everysec

# appendfsync no

################ VIRTUAL MEMORY ###########

#是否開啟VM功能,預設值為no

vm-enabled no

# vm-enabled yes

#虛擬記憶體檔案路徑,預設值為/tmp/redis.swap,不可多個Redis執行個體共用

vm-swap-file /tmp/redis.swap

#將所有大於vm-max-memory的資料存入虛擬記憶體,無論vm-max-memory設定多小,所有索引資料都是記憶體儲存的 (Redis的索引資料就是keys),也就是說,當vm-max-memory設定為0的時候,其實是所有value都存在於磁碟。預設值為0。

vm-max-memory 0

vm-page-size 32

vm-pages 134217728

vm-max-threads 4

############# ADVANCED CONFIG ###############

glueoutputbuf yes

hash-max-zipmap-entries 64

hash-max-zipmap-value 512

#是否重設Hash表

activerehashing yes

注意:Redis官方文檔對VM的使用提出了一些建議:

  • 當你的key很小而value很大時,使用VM的效果會比較好.因為這樣節約的記憶體比較大.
  • 當你的key不小時,可以考慮使用一些非常方法將很大的key變成很大的value,比如你可以考慮將key,value組合成一個新的value.
  • 最好使用linux ext3 等對疏鬆檔案支援比較好的檔案系統儲存你的swap檔案.
  • vm-max-threads這個參數,可以設定訪問swap檔案的線程數,設定最好不要超過機器的核心數.如果設定為0,那麼所有對swap檔案的操作都是串列的.可能會造成比較長時間的延遲,但是對資料完整性有很好的保證.

 

2. 調整系統核心參數

如果記憶體情況比較緊張的話,需要設定核心參數:

echo 1 > /proc/sys/vm/overcommit_memory

這裡說一下這個配置的含義:/proc/sys/vm/overcommit_memory
該檔案指定了核心針對記憶體配置的策略,其值可以是0、1、2。
0,表示核心將檢查是否有足夠的可用記憶體供應用進程使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用進程。
1,表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
2,表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體
Redis在dump資料的時候,會fork出一個子進程,理論上child進程所佔用的記憶體和parent是一樣的,比如parent佔用的記憶體為 8G,這個時候也要同樣分配8G的記憶體給child, 如果記憶體無法負擔,往往會造成redis伺服器的down機或者IO負載過高,效率下降。所以這裡比較最佳化的記憶體配置策略應該設定為 1(表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何)

 四. 運行 Redis

 

1. 運行服務

redis-server /etc/redis/redis.conf

即可在後台啟動redis服務,確認運行了之後,可以用redis-benchmark命令測試看看,還可以通過redis-cli命令實際操作一下,比如:

redis-cli set foo bar

OK

redis-cli get foo

bar

2. 關閉服務

redis-cli shutdown

如果連接埠變化可以指定連接埠:

redis-cli -p 6380 shutdown

3. 儲存/備份

資料備份可以通過定期備份該檔案實現。
因為redis是非同步寫入磁碟的,如果要讓記憶體中的資料馬上寫入硬碟可以執行如下命令:
redis-cli save 或者 redis-cli -p 6380 save(指定連接埠)
注意,以上部署操作需要具備一定的許可權,比如複製和設定核心參數等。
執行redis-benchmark命令時也會將記憶體資料寫入硬碟。

4. 同步機制

redis實現的同步機制相對簡單,缺少同步機制常見的check point和校正機制。
在運行時,如果master -> slave同步請求轉寄被丟棄, slave將無法恢複該請求的相關資訊,直到slave重啟時從master全量載入資料時才能修複。因此,建議使用redis盡量利用其 key/value和value支援多種類型的特性,儲存一些相對不重要的資料。

 五. 自啟動

 

從此處下載指令碼  下載

聲明:此指令碼來自網路,經過簡單修改,已測,可用。

用這個指令碼管理之前,需要先配置下面的核心參數,否則Redis指令碼在重啟或停止redis時,將會報錯,並且不能自動在停止服務前同步資料到磁碟上:

vi /etc/sysctl.conf

vm.overcommit_memory = 1

然後應用生效:
sysctl -p

然後增加服務並開機自啟動:

chmod 755 /etc/init.d/redis
chkconfig --add redis
chkconfig --level 345 redis on
chkconfig --list redis

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.