程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Redis教程 >> 關於Redis >> 詳談redis優化配置和redis.conf說明(推薦)

詳談redis優化配置和redis.conf說明(推薦)

編輯:關於Redis

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-server /etc/redis/redis.conf 開啟

# redis-cli shutdown 關閉

二、 測試

1) 可在後台啟動redis服務後,用redis-benchmark命令測試

2) 通過redis-cli命令實際操作測試

三、 保存/備份

數據備份可以通過定期備份該文件實現。

因為redis是異步寫入磁盤的,如果要讓內存中的數據馬上寫入硬盤可以執行如下命令:

redis-cli save 或者 redis-cli -p 6380 save(指定端口)

注意,以上部署操作需要具備一定的權限,比如復制和設定內核參數等。

執行redis-benchmark命令時也會將內存數據寫入硬盤。

四、 開啟端口號

1) 打開/etc/sysconfig/iptables,

2) 在-【A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT】後面,加上 【-A INPUT -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT】  //這裡的6379是Redis默認端口號

3) 保存,重啟防火牆:/etc/init.d/iptables restart

以上這篇詳談redis優化配置和redis.conf說明(推薦)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved