redis基本配置和相關設置

redis-cli:the redis command line interfacelinux

command line usage:
$redis-cli incr mycounter
輸出的結果只會顯示在終端,若是須要將結果指定到相應的文件,須要本身定義
$redis-cli incr mycounter >/tmp/output.txtgit

鏈接非本機和非默認端口:
$redis-cli -h reedis15.localnet.org -p 6390 ping
若是實例經過密碼保護:
$redis-cli -a kasumi pinggithub

getting input from other programs:
$redis-cli -x set foo < /etc/services
或者
$cat /tmp/commands.txt | redis-cli
文件中的命令會一次執行redis

continuously run the same command:
-r:count -i:delay
$redis-cli -r 5 incr foo
(integer) 1
(integer) 2
(integer) 3
(integer) 4
(integer) 5數據庫

$redis-cli -r 1 -i 1 INFO | grep rss_humanvim

CSV output:
使用redis-cli快速導出數據到外部程序
$redis-cli lpush mylist a b c d
(integer) 4
$redis-cli --csv lrange mylist 0 -1
"d","c","b","a"緩存

running Lua scripts:
使用redis-cli執行腳本
$ cat /tmp/script.lua
return redis.call('set',KEYS[1],ARGV[1])
$ redis-cli --eval /tmp/script.lua foo , bar
OK服務器

interactive mode:(交互模式 )
redis-cli對於腳本和肯定類型的測試頗有幫助,使用redis-cli而不加任何參數,將進入interactive mode.less

使用connect鏈接不一樣的實例,指明主機名和端口:異步

connect metal 6379
metal:6379>

出於非鏈接狀態的時候,CLI會企圖自動從新鏈接,若是嘗試鏈接失敗,將會給出錯誤的信息,而且顯示當前未鏈接的狀態。
127.0.0.1:6379> debug restart
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> ping
PONG
127.0.0.1:6379> (now we are connected again)

若是在操做的中間過程失去鏈接,當從新創建鏈接後,redis-cli會自動選擇最新的數據,以前的數據狀態會丟失,
雖然這不是一個常常發生的狀況,可是須要了解這個限制。

getting a list of keys:
$redis-cli --scan | head -10
$redis-cli --scan --partten '-11' --使用--partten篩選須要查詢的值的類型
$redis-cli --scan --partten 'user:*' | wc -1 --使用wc對篩選的結果進行統計

pub/sub mode:
sub須要塊和等待信息的寫入
$redis-cli psubscribe '*'

monitoring commands executed in redis:
$redis-cli monitor
可使用grep來過濾須要監控的特定的數據

remote backup of RDB files:
在redis同步以後,主從經過RDB的形式交換數據.
$redis-cli --rdb /tmp/dump.rdb
SYNC sent to master, writing 13256 bytes to '/tmp/dump.rdb'
Transfer finished with success.
是備份恢復的有效解決方式,在備份的過程當中,若是返回值不是0,則代表在備份的過程當中出現了錯誤。

slave mode:
$redis-cli --slave

redis configuration:

redis能夠經過安裝時默認的配置文件啓動,可是這隻適用於測試.

the self documented redis.conf for redis3.0
--https://raw.githubusercontent.com/antirez/redis/3.0/redis.conf

changing redis configuration while the server is running:
在不中止和重啓的狀況下修改redis的配置文件,可使用CONFID SET和CONFIG GET,可是這種更改對redis.conf文件不會有任何影響,
因此在下一次重啓的時候,會使用以前的配置文件.
使用CONFIG REWRITE去重寫redis.conf,會自動掃描redis.conf,更新與當前的配置不匹配的參數值。

replication:(複製)

1.redis使用異步的同步機制
2.一個主服務能夠有多個從服務
3.從服務能夠接受其餘非同一注服務的從服務的鏈接,做爲一個級聯的結構

safety of replication when master has persistence turned off:
當開啓複製的時候,強烈建議保持主服務一直開啓,若是不能確保主服務一直開啓,應當避免在服務器重啓後,自動重啓redis服務.
當從服務進行復制的時候,會刪除以前保持的數據,保持新複製的數據。若是主服務出於關閉狀態,當開機自動重啓後,主服務中的數據是空的,
當從服務去複製數據的時候,將會複製空數據,而後刪除以前所保留的數據。

every time data safety is important !!!

diskless replication:
repl-diskless-sync參數
slave-read-only

redis可寫的數據個數大於63,可是默認redis實例只能夠鏈接16個數據庫

若是master使用了請求認證,slave在同步操做的時候須要進行密碼驗證,能夠將master的密碼認證寫入到配置文件,永久生效:
masterauth

redis administration:

redis setup hints:
1.vim /etc/sysctl.conf
vm.overcommit_memory = 1
重啓服務器或者執行sysctl vm.overcommit_memory=1使配置當即生效
2.中止linux內核的相關參數
echo never > /sys/kernel/mm/transparent_hugepage/enabled
3.確保有必定的swap空間
4.redis默認不須要密碼驗證,能夠監聽全部的接口

upgrading or restarting a redis instance without downtime:
1.開啓slave,須要另外的服務器或者足夠的RAM空間來保證兩個redis實例同時運行
2.若是是單實例,則須要在其餘端口運行redis服務
3.等待複製的初始同步完成
4.使用INFO確保master和slave保持相同的key值,而且slave能夠響應指令
5.容許slave能夠進行寫操做:config set slave-read-only no
6.配置全部的客戶端,使其可使用新的實例
7.保證master再也不接收任何序列,而後選取slave做爲master,使用SLAVEOF NO ONE,而後關閉master

redis security:

bind 127.0.0.1

authentication feature:
若是有其餘的防火牆的保護,就不須要進行密碼的設置
$vim /data/redis/etc/redis.conf
requirepass Dm1vh3u1jyjsYMVc

redis clients handing:

in what order clients are served:
當有新的請求的時候,纔會處理一個read的信號。

output buffers lilmits:

redis須要處理一個長度可變的輸出緩存,命令能夠產生很大的數據,傳輸給客戶端。

hard limit:當緩存達到限制值的時候,redis會關閉其餘客戶端的鏈接
soft limit:依賴於時間的限制,在某一個連續的時間段,輸出緩存超出某個限制,則會關閉鏈接

不一樣的客戶端有不一樣的默認限制:
1.通常的用戶,沒有緩存的限制
2.pub/sub clients,hard limit:32 soft limit:8 60
3.slave,hard limit:256 soft limit:64 60
在配置文件中修改緩存的限制

client timeouts:
超時請求只適用於normal clients,不適用於pub/sub clients.

client list
查看鏈接的client,client kill+addr中止特定的client.

high availability:

1.監控:檢測系統會持續檢測master和slave是否正常工做
2.告警:檢測系統會經過API通知管理員或者其餘的計算機程序,redis出現了錯誤
3.走動的失敗檢測:當master服務沒有正常運行的時候,檢測系統會開啓一個其餘的slave做爲新的master,其餘的slave將以新的master來應用數據
4.配置文件提供者:當客戶端進行鏈接的時候,檢測系統會請求master的地址,響應服務,若是有失敗出現,檢測系統會提供新的master

running sentinel:
1.redis-sentinel /path/to/sentinel.conf
2.redis-server /path/to/sentinel.conf --sentinel
檢測系統默認使用26379端口。檢測系統會默認使用配置文件來開啓服務,配置文件須要有可寫的權限。

adding or removing sentinels:
A:redis的自動發現功能,會在添加sentinel後,自動接收數據,只須要在master上添加一個sentinel便可
若是要添加多個sentinel,須要一個一個的添加,當以前添加的sntinel能夠接受數據後,再添加下一個
B:1.中止想要移除的sentinel程序
2.使用 SENTINEL RESET * 來執行須要移除的mater的tentinel
3.確保全部的sentinel能夠發現目前所使用的sentinel的狀態---SENTINEL MASTER mastername

removing the old master or unreachable slave:

slaves priority: slave-priority,1.若是其值被設置爲0,那麼slave將永遠不會被選做master 2.sentinel優先選擇slave priority值較小的做爲master

相關文章
相關標籤/搜索