一、redis安裝配置
- 下載安裝包
cd /usr/local/src
wget http://download.redis.io/releases/redis-3.2.9.tar.gz
- 解壓
tar -xf redis-3.2.9.tar.gz
- 編譯安裝到 /usr/local/redis
mkdir -p /usr/local/redis
cd redis-3.2.9
make PREFIX=/usr/local/redis install
- 修改配置文件
#將源碼目錄的 redis.conf 復制到安裝目錄下
cp /usr/local/src/redis-3.2.9/redis.conf /usr/local/redis/
- 生成系統(tǒng)服務(wù)(可選)
#將源碼目錄的 utils/redis_init_script 復制到/etc/init.d
cp /usr/local/src/redis-3.2.9/utils/redis_init_script /etc/init.d/redis
修改reids文件如下
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
REDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cli
PIDFILE=/var/run/redis.pid
CONF="/usr/local/redis/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
- 添加系統(tǒng)環(huán)境變量
vi /etc/profile
在最后行追加:
export PATH=$PATH:/usr/loca/redis/bin
使修改立即生效:
source /etc/profile
二明刷、redis操作
- redis命令啟動
#啟動
./redis-server redis.conf
#退出redis操作界面
exit
#停止
./redis-cli [-a password] shutdown
- redis service 啟動
#啟動服務(wù)
service start
#停止服務(wù)
service stop
- redis.conf配置文件
daemonize yes #---默認值no飒炎,該參數(shù)用于定制redis服務(wù)是否以守護模式運行陨献。---
pidfile /usr/local/webserver/redis/run/redis.pid #默認值/var/run/redis.pid,指定redis服務(wù)的進程號文件路徑,以守護模式運行時需要配置本參數(shù)慕趴;
port 6379 #默認值6379,指定redis服務(wù)的端口
# bind 127.0.0.1 #綁定ip鄙陡,默認是本機所有網(wǎng)絡(luò)設(shè)備冕房;
timeout 0 #客戶端空閑n秒后斷開連接;默認是 0 表示不斷開趁矾。
loglevel notice ###設(shè)置服務(wù)端的日志級別耙册,有下列幾種選擇:
debug:記錄詳細信息,用于開發(fā)或調(diào)試毫捣;
verbose:提供很多有用的信息详拙,但是又不像debug那么詳盡,默認就是這一選項蔓同;
notice:適度提醒饶辙,多用于產(chǎn)品環(huán)境;
warning:僅顯示重要的警告信息斑粱;
logfile stdout ##指定日志的輸出路徑弃揽,默認值stdout,表示輸出到屏幕则北,守護模式時則輸出到/dev/null矿微;
如果要輸出日志到syslog中,可以啟動syslog-enabled yes咒锻,默認該選項值為no冷冗。
# syslog-enabled no
databases 16 ###指定數(shù)據(jù)庫的數(shù)量,默認為16個惑艇,默認使用的數(shù)據(jù)庫是DB 0蒿辙。
----以下為快照相關(guān)的設(shè)置:------
# save <seconds> <changes> ##指定多長時間刷新快照至磁盤拇泛,這個選項有兩個屬性值,只有當兩個屬性值均滿足時才會觸發(fā)思灌;可以設(shè)置多種級別俺叭,例如默認的參數(shù)文件中就設(shè)置了:
save 900 1:每900秒(15分鐘)至少一次鍵值變更時被觸發(fā);
save 300 10:每300秒(5分鐘)至少10次鍵值變更時被觸發(fā)泰偿;
save 60 10000:每60秒至少10000次鍵值變更時被觸發(fā)熄守;
save 900 1
save 300 10
save 60 10000
rdbcompression yes ##默認值yes,當dump數(shù)據(jù)庫時使用LZF壓縮字符串對象耗跛,如果CPU資源比較緊張裕照,可以設(shè)置為no,選擇不壓縮调塌;
rdbchecksum yes
# The filename where to dump the DB 數(shù)據(jù)庫文件名
dbfilename dump.rdb ##默認值dump.rdb晋南,dump到文件系統(tǒng)中的文件名
dir /usr/local/webserver/redis/db ##默認值./,即當前目錄羔砾,dump出的數(shù)據(jù)文件的存儲路徑负间;
----以下為復制相關(guān)的設(shè)置,復制默認是不啟用的姜凄,因此在默認的參數(shù)文件下列表參數(shù)均被注釋----
# slaveof <masterip> <masterport> ##指定主端ip和端口政溃,用于創(chuàng)建一個鏡像服務(wù)
# masterauth <master-password> ##如果master配置了密碼的話,此處也需做設(shè)置态秧;
slave-serve-stale-data yes ##默認值yes董虱。當slave丟失與master端的連接,或者復制仍在處理屿聋,那么slave會有下列兩種表現(xiàn):
當本參數(shù)值為yes時空扎,slave為繼續(xù)響應客戶端請求,盡管數(shù)據(jù)已不同步甚至沒有數(shù)據(jù)(出現(xiàn)在初次同步的情況下)润讥;
當本參數(shù)值為no時转锈,slave會返回"SYNC with master in progreee"的錯誤信息;
slave-read-only yes ##默認從Redis是只讀模式
# repl-ping-slave-period 10 ###默認值10楚殿,指定slave定期ping master的周期撮慨;
# repl-timeout 60 ##默認值60,指定超時時間脆粥。注意本參數(shù)包括批量傳輸數(shù)據(jù)和ping響應的時間砌溺。
------以下為安全相關(guān)的設(shè)置------
# requirepass foobared ###指定一個密碼,客戶端連接時也需要通過密碼才能成功連接变隔;
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 ###重定義命令规伐,例如將CONFIG命令更名為一個很復雜的名字:
# rename-command CONFIG "" 取消這個命令;
-----以下為資源限制方面的設(shè)置------
# maxclients 10000 ##指定客戶端的最大并發(fā)連接數(shù)匣缘,默認是沒有限制猖闪,直到redis無法創(chuàng)建新的進程為止鲜棠,設(shè)置該參數(shù)值為0也表示不限制,如果該參數(shù)指定了值培慌,當并發(fā)連接達到指定值時豁陆,redis會關(guān)閉所有新連接,并返回'max number of clients reached'的錯誤信息吵护;
# maxmemory <bytes> ###設(shè)置redis最大可使用內(nèi)存盒音。當達到最大內(nèi)存后,redis會嘗試按照設(shè)置的回收策略刪除鍵值馅而。如果無法刪除鍵值祥诽,或者保留策略設(shè)置為不清除,那么redis就會向發(fā)出內(nèi)存的請求返回錯誤信息用爪。當把redis做為一級LRU的緩存時本參數(shù)較為有用原押。
# maxmemory-policy volatile-lru ###默認值volatile-lru,指定清除策略偎血,有下列幾種方法:
volatile-lru -> remove the key with an expire set using an LRU algorithm
allkeys-lru -> remove any key accordingly to the LRU algorithm
volatile-random -> remove a random key with an expire set
allkeys->random -> remove a random key, any key
volatile-ttl -> remove the key with the nearest expire time (minor TTL)
noeviction -> don't expire at all, just return an error on write operations
# maxmemory-samples 3 ###默認值3,LRU和最小TTL策略并非嚴謹?shù)牟呗远⑵谴蠹s估算的方式颇玷,因此可以選擇取樣值以便檢查。
-----以下為APPEND的配置----
ONLY模式的設(shè)置就缆,默認情況下redis采用異步方式dump數(shù)據(jù)到磁盤上帖渠,極端情況下這可能會導致丟失部分數(shù)據(jù)(比如服務(wù)器突然宕機),如果數(shù)據(jù)比較重要竭宰,不希望丟失空郊,可以啟用直寫的模式,這種模式下redis會將所有接收到的寫操作同步到appendonly.aof文件中切揭,該文件會在redis服務(wù)啟動時在內(nèi)存中重建所有數(shù)據(jù)狞甚。注意這種模式對性能影響非常之大。
appendonly no ##默認值no廓旬,指定是否啟用直寫模式哼审;
# appendfilename appendonly.aof ###直寫模式的默認文件名appendonly.aof
appendfsync:調(diào)用fsync()方式讓操作系統(tǒng)寫數(shù)據(jù)到磁盤上,數(shù)據(jù)同步方式孕豹,有下列幾種模式:
always:每次都調(diào)用涩盾,比如安全,但速度最慢励背;
everysec:每秒同步春霍,這也是默認方式;
no:不調(diào)用fsync叶眉,由操作系統(tǒng)決定何時同步址儒,比如快的模式芹枷;
no-appendfsync-on-rewrite:默認值no。當AOF fsync策略設(shè)置為always或everysec离福,后臺保存進程會執(zhí)行大量的I/O操作杖狼。某些linux配置下redis可能會阻塞過多的fsync()調(diào)用。
auto-aof-rewrite-percentage:默認值100
auto-aof-rewrite-min-size:默認值64mb
# appendfsync always
appendfsync everysec
# appendfsync no
-----以下為高級配置相關(guān)的設(shè)置----
hash-max-zipmap-entries:默認值512妖爷,當某個map的元素個數(shù)達到最大值蝶涩,但是其中最大元素的長度沒有達到設(shè)定閥值時,其HASH的編碼采用一種特殊的方式(更有效利用內(nèi)存)絮识。本參數(shù)與下面的參數(shù)組合使用來設(shè)置這兩項閥值绿聘。設(shè)置元素個數(shù);
hash-max-zipmap-value:默認值64次舌,設(shè)置map中元素的值的最大長度熄攘;這兩個
list-max-ziplist-entries:默認值512,與hash類似彼念,滿足條件的list數(shù)組也會采用特殊的方式以節(jié)省空間挪圾。
list-max-ziplist-value:默認值64
set-max-intset-entries:默認值512,當set類型中的數(shù)據(jù)都是數(shù)值類型逐沙,并且set中整型元素的數(shù)量不超過指定值時哲思,使用特殊的編碼方式。
zset-max-ziplist-entries:默認值128吩案,與hash和list類似棚赔。
zset-max-ziplist-value:默認值64
activerehashing:默認值yes,用來控制是否自動重建hash徘郭。Active rehashing每100微秒使用1微秒cpu時間排序靠益,以重組Redis的hash表。重建是通過一種lazy方式残揉,寫入hash表的操作越多胧后,需要執(zhí)行rehashing的步驟也越多,如果服務(wù)器當前空閑冲甘,那么rehashing操作會一直執(zhí)行绩卤。如果對實時性要求較高,難以接受redis時不時出現(xiàn)的2微秒的延遲江醇,則可以設(shè)置activerehashing為no濒憋,否則建議設(shè)置為yes,以節(jié)省內(nèi)存空間陶夜。