linux下redis安裝及配置介紹
阿新 • • 發佈:2018-11-03
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位元組的資料包的效能