一、 下載redis最新版本2.2.14cd /usr/local/srcwget –chttp://redis.googlecode/files/redis-2.2.14.tar.gz二、 編譯安裝redistar zxvf redis-2.2.14.tar.gzcd redis-2.2.14makemake命令執行完成後,會在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三、 配置 Redismkdir /etc/rediscp redis.conf /etc/redis/redis.confmkdir /var/lib/redis可從此處下載修改好的redis.conf下載1. redis.conf 配置參數:#是否作為守護進程運行daemonize yes#如以後台進程運行,則需指定一個pid,默認為/var/run/redis.pidpidfile redis.pid#綁定主機IP,默認值為127.0.0.1#bind 127.0.0.1#Redis默認監聽端口port 6379#客戶端閑置多少秒後,斷開連接,默認為300(秒)timeout 300#日誌記錄等級,有4個可選值,debug,verbose(默認值),notice,warningloglevel verbose#指定日誌輸出的文件名,默認值為stdout,也可設為/dev/null屏蔽日誌logfile stdout#可用數據庫數,默認值為16,默認數據庫為0databases 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.rdbdbfilename 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條件來同步的,所以有的數據會在一段時間內隻存在於內存中。默認值為noappendonly no#更新日誌文件名,默認值為appendonly.aof#appendfilename#更新日誌條件,共有3個可選值。no表示等操作係統進行數據緩存同步到磁盤,always表示每次更新操作後手動調用fsync()將數據寫到磁盤,everysec表示每秒同步一次(默認值)。# appendfsync alwaysappendfsync everysec# appendfsync no################ VIRTUAL MEMORY ############是否開啟VM功能,默認值為novm-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 0vm-page-size 32vm-pages 134217728vm-max-threads 4############# ADVANCED CONFIG ###############glueoutputbuf yeshash-max-zipmap-entries 64hash-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(表示內核允許分配所有的物理內存,而不管當前的內存狀態如何)四. 運行 Redis1. 運行服務redis-server /etc/redis/redis.conf即可在後台啟動redis服務,確認運行了之後,可以用redis-benchmark命令測試看看,還可以通過redis-cli命令實際操作一下,比如:redis-cli set foo barOKredis-cli get foobar2. 關閉服務redis-cli shutdown如果端口變化可以指定端口:redis-cli -p 6380 shutdown3. 保存/備份數據備份可以通過定期備份該文件實現。
因為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.confvm.overcommit_memory = 1然後應用生效:
sysctl -p然後增加服務並開機自啟動:chmod 755 /etc/init.d/redis
chkconfig --add redis
chkconfig --level 345 redis on
chkconfig --list redis
望采納