您好,登錄后才能下訂單哦!
? ? redis是一款非關系型數據庫,是一個高性能的key-value數據庫,經常被用作關系型數據庫的緩存數據庫以提高服務器訪問速度,特別適用于高并發場景。為了提升Redis高可用性,本次實戰,先講redis.conf配置文件,然后做主從庫配置。
1.redis.conf配置文件詳解
1)基本配置
daemonize no 是否以后臺進程啟動
databases 16 創建database的數量(默認選中的是database 0)
save 900 1 #刷新快照到硬盤中,必須滿足兩者要求才會觸發,即900秒之后至少1個關鍵字發生變化。
save 300 10 #必須是300秒之后至少10個關鍵字發生變化。
save 60 10000 #必須是60秒之后至少10000個關鍵字發生變化。
stop-writes-on-bgsave-error yes #后臺存儲錯誤停止寫。
rdbcompression yes #使用LZF壓縮rdb文件。
rdbchecksum yes #存儲和加載rdb文件時校驗。
dbfilename dump.rdb #設置rdb文件名。
dir ./? #設置工作目錄,rdb文件會寫入該目錄。
2)主從配置
slaveof <masterip> <masterport> 設為某臺機器的從服務器
masterauth <master-password> 連接主服務器的密碼
slave-serve-stale-data yes # 當主從斷開或正在復制中,從服務器是否應答
slave-read-only yes #從服務器只讀
repl-ping-slave-period 10 #從ping主的時間間隔,秒為單位
repl-timeout 60 #主從超時時間(超時認為斷線了),要比period大
slave-priority 100 #如果master不能再正常工作,那么會在多個slave中,選擇優先值最小的一個slave提升為master,優先值為0表示不能提升為master。
repl-disable-tcp-nodelay no #主端是否合并數據,大塊發送給slave
slave-priority 100 從服務器的優先級,當主服掛了,會自動挑slave priority最小的為主服
3)安全
requirepass foobared # 需要密碼
rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 #如果公共環境,可以重命名部分敏感命令 如config
4)限制
maxclients 10000 #最大連接數
maxmemory <bytes> #最大使用內存
maxmemory-policy volatile-lru #內存到極限后的處理
volatile-lru -> LRU算法刪除過期key
allkeys-lru -> LRU算法刪除key(不區分過不過期)
volatile-random -> 隨機刪除過期key
allkeys-random -> 隨機刪除key(不區分過不過期)
volatile-ttl -> 刪除快過期的key
noeviction -> 不刪除,返回錯誤信息
解釋 LRU ttl都是近似算法,可以選N個,再比較最適宜T踢出的數據
maxmemory-samples 3
5)日志模式
appendonly no #是否僅要日志
appendfsync no # 系統緩沖,統一寫,速度快
appendfsync always # 系統不緩沖,直接寫,慢,丟失數據少
appendfsync everysec #折衷,每秒寫1次
no-appendfsync-on-rewrite no #為yes,則其他線程的數據放內存里,合并寫入(速度快,容易丟失的多)
auto-AOF-rewrite-percentage 100 當前aof文件是上次重寫是大N%時重寫
auto-AOF-rewrite-min-size 64mb aof重寫至少要達到的大小
6)慢查詢
slowlog-log-slower-than 10000 #記錄響應時間大于10000微秒的慢查詢
slowlog-max-len 128 # 最多記錄128條
7)服務端命令
time 返回時間戳+微秒
dbsize 返回key的數量
bgrewriteaof 重寫aof
bgsave 后臺開啟子進程dump數據
save 阻塞進程dump數據
lastsave
slaveof host port 做host port的從服務器(數據清空,復制新主內容)
slaveof no one 變成主服務器(原數據不丟失,一般用于主服失敗后)
flushdb 清空當前數據庫的所有數據
flushall 清空所有數據庫的所有數據(誤用了怎么辦?)
shutdown [save/nosave] 關閉服務器,保存數據,修改AOF(如果設置)
slowlog get 獲取慢查詢日志
slowlog len 獲取慢查詢日志條數
slowlog reset 清空慢查詢
info []
config get 選項(支持*通配)
config set 選項 值
config rewrite 把值寫到配置文件
config restart 更新info命令的信息
debug object key #調試選項,看一個key的情況
debug segfault #模擬段錯誤,讓服務器崩潰
object key (refcount|encoding|idletime)
monitor #打開控制臺,觀察命令(調試用)
client list #列出所有連接
client kill #殺死某個連接 CLIENT KILL 127.0.0.1:43501
client getname #獲取連接的名稱 默認nil
client setname "名稱" #設置連接名稱,便于調試
8)連接命令
auth 密碼 #密碼登陸(如果有密碼)
ping #測試服務器是否可用
echo "some content" #測試服務器是否正常交互
select 0/1/2... #選擇數據庫
quit #退出連接
2.Redis緩存服務器命令行中常用命令如下:
127.0.0.1:6379> config get *??#獲取Redis服務器所有配置信息
127.0.0.1:6379> config set loglevel notice? ? ?#總共有4個日志級別可供選擇
127.0.0.1:6379> config set requirepass "sky9899"??#配置redis訪問密碼
127.0.0.1:6379> auth sky9899
redis-cli -h host -p port -a password? ? #遠程連接Redis數據庫
[root@redis_slave bin]# redis-cli -h 192.168.153.142 -p 6379 -a sky9899??#實例
127.0.0.1:6379> role? #返回主從實例所屬角色
127.0.0.1:6379> info? ? ?#獲取redis服務器的各種信息和統計數值
127.0.0.1:6379> slaveof 192.168.153.143 6379? ?#指定服務器的從服務器
3.Redis集群實戰
Redis主從復制,當用戶往master端寫入數據時,通過Redis sync機制將數據文件發送到slave,slave也會執行相同的操作確保數據一致。
Redis主庫配置:redis.conf
daemonize no
pidfile /var/run/redis.pid
port 6379
tcp-backlog 511
# bind 127.0.0.1
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
從庫192.168.153.143:redis.conf配置
daemonize no
pidfile /var/run/redis.pid
port 6379
slaveof? 192.168.153.142 6379? ?? #指定主庫IP及端口號
tcp-backlog 511
# bind 127.0.0.1
timeout 0
tcp-keepalive 0
loglevel notice
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./? ?#設置工作目錄,rdb文件會寫入該當前目錄,也可以指定新目錄。
slave-serve-stale-data yes
slave-read-only yes
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
4.測試結果:
1)192.168.153.142:Redis主庫操作
[root@redis_master bin]# ./redis-cli
127.0.0.1:6379> set sky9899? www.sky9899.com
OK
127.0.0.1:6379> set sky9890? ?www.sky9890.com
OK
127.0.0.1:6379> get sky9899
"www.sky9899.com"
127.0.0.1:6379> get sky9890
"www.sky9890.com"
2)192.168.153.143: Redis從庫操作
127.0.0.1:6379>?
[root@redis_slave bin]# ./redis-cli?
127.0.0.1:6379> get sky9899
"www.sky9899.com"
127.0.0.1:6379> get sky9890
"www.sky9890.com"
127.0.0.1:6379>?
小結,通過主從庫操作的結果顯示,說明主從庫配置成功。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。