Redis安裝(Windows環境下Redis安裝)


1、官方沒有 Windows版本的 Redis,官網介紹:



      Redis項目不正式支持Windows。但是,微軟開發並維護了針對Win64的Windows版本。


    2、Windows版本下載地址:https://github.com/MicrosoftArchive/redis/releases

        下載 Redis-x64-3.2.100.zip




3、解壓後目錄如下:




4、打開cmd命令進入redis目錄,執行 

E:\redis>redis-server.exe redis.windows.conf


    顯示如下圖所示,表示 Redis 服務已啓動




啓動後窗口不要關,新開一個cmd窗口,執行 

E:\redis>redis-cli
默認連接本機127.0.0.1 端口號 6379,連接成功。


5、將Redis 加入 Windows 服務,執行

redis-server --service-install redis.windows.conf
提示:Redis successfully installed as a service. 

表示加入服務成功!

如果 Redis 設置了密碼,加入服務時會提示

E:\redis>redis-server --service-install redis.windows.conf
[7540] 01 Feb 11:02:40.287 # Granting read/write access to 'NT AUTHORITY\NetworkService' on: "E:\redis" "E:\redis\"
[7540] 01 Feb 11:02:40.288 # Redis successfully installed as a service.


服務就啓動不了,可以服務里加參數處理,如下圖所示:




啓動參數里加入:

-a 123456
123456 是你的Redis密碼。

安裝完成!


Redis 詳細參數配置說明:

各個功能模塊的配置參數如下:

GENERAL

./redis-server /path/to/redis.conf 按照指定的配置文件啓動 
include /path/to/other.conf 包含其它的redis配置文件 
daemonize yes 啓用後臺守護進程運行模式 
pidfile /var/run/redis.pid redis啓動後的進程ID保存文件 
port 6379 指定使用的端口號 
bind IP 監聽指定的網絡接口 
unixsocket /tmp/redis.sock 指定監聽的socket,適用於unix環境 
timeout N 客戶端空閒N秒後斷開連接,參數0表示不啓用 
loglevel notice 指定服務器信息顯示的等級,4個參數分別爲debug\verbose\notice\warning 
logfile “” 指定日誌文件,默認是使用系統的標準輸出 
syslog-enabled no 是否啓用將記錄記載到系統日誌功能,默認爲不啓用 
syslog-ident redis 若啓用日誌記錄,則需要設置日誌記錄的身份 
syslog-facility local0 若啓用日誌記錄,則需要設置日誌facility,可取值範圍爲local0~local7,表示不同的日誌級別 
databases 16 設置數據庫的數量,默認啓動時使用DB0,使用“select <dbid>”可以更換數據庫 
tcp-backlog 511 此參數確定TCP連接中已完成隊列(3次握手之後)的長度,應小於Linux系統的/proc/sys/net/core/somaxconn的值,此選項默認值爲511,而Linux的somaxconn默認值爲128,當併發量比較大且客戶端反應緩慢的時候,可以同時提高這兩個參數。 
tcp-keepalive 0 指定ACKs的時間週期,單位爲秒,值非0的情況表示將週期性的檢測客戶端是否可用,默認值爲60秒。


SNAPSHOTTING

數據保存頻率: 
save 900 1 900秒後保存,至少有1個key被更改時纔會觸發 
save 300 10 300秒後保存,至少有10個key被更改時纔會觸發 
save 60 10000 60秒後保存,至少有10000個key被更改時纔會觸發

stop-writes-on-bgsave-error yes 最近一次save操作失敗則停止寫操作 
rdbcompression yes 啓用壓縮 
rdbchecksum yes 啓用CRC64校驗碼,當然這個會影響一部份性能 
dbfilename dump.rdb 指定存儲數據的文件名 
dir ./ 指定工作目錄,rdb文件和aof文件都會存放在這個目錄中,默認爲當前目錄


SECURITY

requirepass foobared 有slave端連接時是否需要密碼驗證


LIMITS

maxclients 10000 同一時間內最大clients連接的數量,超過數量的連接會返回一個錯誤信息 
maxmemory <bytes> 設置最大內存 
如果內存使用量到達了最大內存設置,有6種處理方法:

volatile-lru -> remove the key with an expire set using an LRU algorithm
allkeys-lru -> remove any key according 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

默認的設置是 maxmemory-policy noeviction 
maxmemory-samples 5 LRU算法檢查的keys個數


APPEND ONLY MODE

appendonly yes 啓用AOF模式 
appendfilename “appendonly.aof” 設置AOF記錄的文件名

向磁盤進行數據刷寫的頻率,有3個選項: 
always 有新數據則馬上刷寫,速度慢但可靠性高 
everysec 每秒鐘刷寫一次,折衷方法,所謂的redis可以只丟失1秒鐘的數據就是源於此處 
no 按照OS自身的刷寫策略來進行,速度最快 
使用選項來進行設置 appendfsync everysec

no-appendfsync-on-rewrite no 當主進程在進行向磁盤的寫操作時,將會阻止其它的fsync調用 
auto-aof-rewrite-percentage 100 aof文件觸發自動rewrite的百分比,值爲0則表示禁用自動rewrite 
auto-aof-rewrite-min-size 64mb aof文件觸發自動rewrite的最小文件size 
aof-load-truncated yes 是否加載不完整的aof文件來進行啓動


LUA SCRIPTING

lua-time-limit 5000 設置lua腳本的最大運行時間,單位爲毫秒


EVENT NOTIFICATION

notify-keyspace-events “” 事件通知,默認不啓用,具體參數查看配置文件


REPLICATION

Redis的主從複製採用異步的方式進行。 
如果同步連接時slave端短暫的與master端斷開了連接,那連接恢復後允許slave端與master端進行一次局部的再同步。 
主從複製是自動進行的,並不需要用戶的介入,slave端會自動嘗試重連master並進行數據同步。 
slaveof <master ip> <master port> 設置master端的IP與端口信息 
masterauth <master-password> 如果master端啓用了密碼保護(requirepass),那slave端就需要配置此選項 
slave-serve-stale-data yes 當slave端在主從複製的過程中與master端斷開了連接,此時有2種處理方法:一種是繼續提供服務即使數據可能不是最新的,另一種是對請求返回一個錯誤信息,默認配置是繼續提供服務 
slave-read-only yes 自redis 2.6版本開始,slave端默認爲readonly

主從同步支持兩種策略,即disk和socket方式(socket方式尚不完善,還處於實驗階段)。 
新的slave端和重連的salve端不允許去繼續同步進程,這被稱之爲“完全同步”。 
一個RDB文件從master端傳到slave端,分爲兩種情況: 
1、支持disk:master端將RDB file寫到disk,稍後再傳送到slave端; 
2、無磁盤diskless:master端直接將RDB file傳到slave socket,不需要與disk進行交互。 
無磁盤diskless方式適合磁盤讀寫速度慢但網絡帶寬非常高的環境。 
repl-diskless-sync no 默認不使用diskless同步方式 
repl-diskless-sync-delay 5 無磁盤diskless方式在進行數據傳遞之前會有一個時間的延遲,以便slave端能夠進行到待傳送的目標隊列中,這個時間默認是5秒 
repl-ping-slave-period 10 slave端向server端發送pings的時間區間設置,默認爲10秒 
repl-timeout 60 設置超時時間 
repl-disable-tcp-nodelay no 是否啓用TCP_NODELAY,如果啓用則會使用少量的TCP包和帶寬去進行數據傳輸到slave端,當然速度會比較慢;如果不啓用則傳輸速度比較快,但是會佔用比較多的帶寬。 
repl-backlog-size 1mb 設置backlog的大小,backlog是一個緩衝區,在slave端失連時存放要同步到slave的數據,因此當一個slave要重連時,經常是不需要完全同步的,執行局部同步就足夠了。backlog設置的越大,slave可以失連的時間就越長。 
repl-backlog-ttl 3600 如果一段時間後沒有slave連接到master,則backlog size的內存將會被釋放。如果值爲0則表示永遠不釋放這部份內存。 
slave-priority 100 slave端的優先級設置,值是一個整數,數字越小表示優先級越高。當master故障時將會按照優先級來選擇slave端進行恢復,如果值設置爲0,則表示該slave永遠不會被選擇。 
min-slaves-to-write 3 
min-slaves-max-lag 10 設置當一個master端的可用slave少於N個,延遲時間大於M秒時,不接收寫操作。


REDIS CLUSTER

一個正常的redis實例是不能做爲一個redis集羣的節點的,除非它是以一個集羣節點的方式進行啓動。 
cluster-enabled yes 配置redis做爲一個集羣節點來啓動 
cluster-config-file node-6379.conf 每個集羣節點都有一個集羣配置文件,這個文件不需要編輯,它由redis節點來創建和更新。每個redis節點的集羣配置文件不可以相同。 
cluster-node-timeout 15000 設置集羣節點超時時間,如果超過了指定的超時時間後仍不可達,則節點被認爲是失敗狀態,單位爲毫秒。

一個屬於失效的master端的slave,如果它的數據較舊,將不會啓動failover。 
現在來講並沒有一個簡單的方法去解決如何判定一個slave端的數據的時效性問題,所以可以執行以下兩個選擇: 
1、如果有多個slave可用於failover,它們會交換信息以便選出一個最優的進行主從複製的offset,slave端會嘗試依據offset去獲取每個slave的rank,這樣在啓動failover時對每個slave的利用就與slave端的rank成正比。 
2、每個slave端和它的master端進行最後交互的時間,這可能是最近的ping或指令接收時間,或自與master端失連的過時時間。如果最近的交互時間太久,slave就不會嘗試去進行failover。 
第2點可以由用戶來進行調整,明確一個slave不會進行failover。自最近一次與master端進行交互,過時時間有一個計算公式: 
(node-timeout * slave-validity-factor)+repl-ping-slave-period 
一個比較大的slave-validity-factor參數能夠允許slave端使用比較舊的數據去failover它的master端,而一個比較小的值可能會阻止集羣去選擇slave端。 
爲獲得最大的可用性,可以設置slave-validity-factor的值爲0,這表示slave端將會一直去嘗試failover它的master端而不管它與master端的最後交互時間。 
cluster-slave-validity-factor 10 默認值爲10

集羣中的slave可以遷移到那些沒有可用slave的master端,這提升了集羣處理故障的能力。畢竟一個沒有slave的master端如果發生了故障是沒有辦法去進行failover的。 
要將一個slave遷移到別的master,必須這個slave的原master端有至少給定數目的可用slave纔可以進行遷移,這個給定的數目由migration barrier參數來進行設置,默認值爲1,表示這個要進行遷移的slave的原master端應該至少還有1個可用的slave才允許其進行遷移,要禁用這個功能只需要將此參數設置爲一個非常大的值。 
cluster-migration-barrier 1

默認情況下當redis集羣節點發現有至少一個hashslot未被covered時將會停止接收查詢。 
這種情況下如果有一部份的集羣down掉了,那整個集羣將變得不可用。 
集羣將會在所有的slot重新covered之後自動恢復可用。 
若想要設置集羣在部份key space沒有cover完成時繼續去接收查詢,就將參數設置爲no。 
cluster-require-full-coverage yes


SLOW LOG

redis的slow log是一個系統OS進行的記錄查詢,它是超過了指定的執行時間的。執行時間不包括類似與client進行交互或發送回覆等I/O操作,它只是實際執行指令的時間。 
有2個參數可以配置,一個用來告訴redis執行時間,這個時間是微秒級的(1秒=1000000微秒),這是爲了不遺漏命令。另一個參數是設置slowlog的長度,當一個新的命令被記錄時,最舊的命令將會從命令記錄隊列中移除。 
slowlog-log-slower-than 10000 
slowlog-max-len 128 
可以使用“slowlog reset”命令來釋放slowlog佔用的內存。


LATENCY MONITOR

latency-monitor-threshold 0 延遲監控,用於記錄等於或超過了指定時間的操作,默認是關閉狀態,即值爲0。


ADVANCED CONFIG

當條目數量較少且最大不會超過給定閥值時,哈希編碼將使用一個很高效的內存數據結構,閥值由以下參數來進行配置。 
hash-max-ziplist-entries 512 
hash-max-ziplist-value 64

與哈希類似,少量的lists也會通過一個指定的方式去編碼從而節省更多的空間,它的閥值通過以下參數來進行配置。 
list-max-ziplist-entries 512 
list-max-ziplist-value 64

集合sets在一種特殊的情況時有指定的編碼方式,這種情況是集合由一組10進制的64位有符號整數範圍內的數字組成的情況。以下選項可以設置集合使用這種特殊編碼方式的size限制。 
set-max-intset-entries 512

與哈希和列表類似,有序集合也會使用一種特殊的編碼方式來節省空間,這種特殊的編碼方式只用於這個有序集合的長度和元素均低於以下參數設置的值時。 
zset-max-ziplist-entries 128 
zset-max-ziplist-value 64

hll-sparse-max-bytes 3000 設置HyeperLogLog的字節數限制,這個值通常在0~15000之間,默認爲3000,基本不超過16000 
activerehashing yes redis將會在每秒中抽出10毫秒來對主字典進行重新散列化處理,這有助於儘可能的釋放內存

因爲某些原因,client不能足夠快的從server讀取數據,那client的輸出緩存限制可能會使client失連,這個限制可用於3種不同的client種類,分別是:normal、slave和pubsub。 
進行設置的格式如下:

client-output-buffer-limit <class><hard limit><soft limit><soft seconds>
  • 1

如果達到hard limit那client將會立即失連。 
如果達到soft limit那client將會在soft seconds秒之後失連。 
參數soft limit < hard limit。 
client-output-buffer-limit normal 0 0 0 
client-output-buffer-limit slave 256mb 64mb 60 
client-output-buffer-limit pubsub 32mb 8mb 60

redis使用一個內部程序來處理後臺任務,例如關閉超時的client連接,清除過期的key等等。它並不會同時處理所有的任務,redis通過指定的hz參數去檢查和執行任務。 
hz默認設爲10,提高它的值將會佔用更多的cpu,當然相應的redis將會更快的處理同時到期的許多key,以及更精確的去處理超時。 
hz的取值範圍是1~500,通常不建議超過100,只有在請求延時非常低的情況下可以將值提升到100。 
hz 10

當一個子進程要改寫AOF文件,如果以下選項啓用,那文件將會在每產生32MB數據時進行同步,這樣提交增量文件到磁盤時可以避免出現比較大的延遲。 
aof-rewrite-incremental-fsync yes

(Redis 詳細參數配置說明參考:http://blog.csdn.net/ljl890705/article/details/51540427)

發佈了50 篇原創文章 · 獲贊 62 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章