1. 程式人生 > >linux下redis安裝及配置介紹

linux下redis安裝及配置介紹

1.安裝

wget http://download.redis.io/releases/redis-3.0.4.tar.gz
tar -zvxf redis-3.0.4.tar.gz
cd redis-3.0.4.tar.gz
make

mkdir /usr/local/redis
cp redis-server   /usr/local/redis
cp redis-benchmark  /usr/local/redis
cp redis-cli  /usr/local/redis
cp redis.conf  /usr/local/redis

/usr/local/redis/redis-server /usr/local/redis/redis.conf  啟動
ps -ef | grep redis  (redis是否啟動)

2.redis.conf配置項介紹

#是否作為守護程序執行
daemonize yes

#如以後臺程序執行,則需指定一個pid,預設為/var/run/redis.pid
pidfile redis.pid

#繫結主機IP,預設值為127.0.0.1
#bind 127.0.0.1

#預設監聽埠
port 6379

#客戶端閒置多少秒後,斷開連線,預設為300(秒)
timeout 300

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

#指定日誌輸出的檔名,預設值為stdout,也可設為/dev/null遮蔽日誌
logfile "/xxx/6379.log" 

#可用資料庫數,預設值為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/

#Redis的複製配置
# slaveof <masterip> <masterport> 當本機為從服務時,設定主服務的IP及埠
# masterauth <master-password> 當本機為從服務時,設定主服務的連線密碼

#連線密碼
# requirepass foobared

#最大客戶端連線數,預設不限制
# maxclients 10000

#最大記憶體使用設定,達到最大記憶體設定後,Redis會先嚐試清除已到期或即將到期的Key,當此方法處理後,任到達最大記憶體設定,將無法再進行寫入操作(單例不要超過4G)
# maxmemory <bytes>

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

#更新日誌檔名,預設值為appendonly.aof
#appendfilename

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

#是否開啟VM功能,預設值為no
vm-enabled no
# vm-enabled yes

#虛擬記憶體檔案路徑,預設值為/tmp/redis.swap,不可多個Redis例項共享
vm-swap-file /tmp/redis.swap

注意:Redis官方文件對VM的使用提出了一些建議,當你的key很小而value很大時,使用VM的效果會比較好,因為這樣節約的記憶體比較大。當你的key不小時,可以考慮使用一些非常方法將很大的key變成很大的value,比如你可以考慮將key,value組合成一個新的value。最好使用Linux ext3 等對稀疏檔案支援比較好的檔案系統儲存你的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

glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512

#是否重置Hash表
activerehashing yes

#這個引數,可以設定訪問swap檔案的執行緒數,設定最好不要超過機器的核數。如果設定為0,那麼所有對swap檔案的操作都是序列的,可能會造成比較長時間的延遲,但是對資料完整性有很好的保證。
vm-max-threads

如果記憶體情況比較緊張的話,需要設定核心引數:
echo 1 > /proc/sys/vm/overcommit_memory
這裡說一下這個配置的含義:/proc/sys/vm/overcommit_memory

該檔案指定了核心針對記憶體分配的策略,其值可以是0、1、2
#0. 表示核心將檢查是否有足夠的可用記憶體供應用程序使用;如果有足夠的可用記憶體,記憶體申請允許;否則,記憶體申請失敗,並把錯誤返回給應用程序。
#1. 表示核心允許分配所有的實體記憶體,而不管當前的記憶體狀態如何。
#2. 表示核心允許分配超過所有實體記憶體和交換空間總和的記憶體

repl-timeout 複製超時,預設60s,如果記憶體分配比較多(比如單例項4GB),建議調到3分鐘

repl-backlog-size 1mb 建議調整至128mb,或者根據實際寫入壓力調整,減少slave掉線全量複製的情況發生

rename-command 建議把一些重要的命令rename,防止誤操作

maxmemory-policy volatile-lru  記憶體寫滿策略

no-appendfsync-on-rewrite yes

cluster-enabled yes 開啟叢集功能
cluster-require-full-coverage no

3.效能測試

3.1 redis-benchmark -h 192.168.1.201 -p 6379 -c 100 -n 100000 
100個併發連線,100000個請求,檢測host為localhost 埠為6379的redis伺服器效能 

3.2 redis-benchmark -h 192.168.1.201 -p 6379 -q -d 100  
測試存取大小為100位元組的資料包的效能