BigBrother的大数据之旅Day 17 redis(2)
Redis(2)
1 redis持久化
持久化:
將數(shù)據(jù)從掉電易失的內(nèi)存存放到能夠永久存儲(chǔ)的設(shè)備上
redis持久化 兩種 :
RDB (redis DB)鏡像文件,dump.rdb
AOF(append only file)日志文件,默認(rèn)關(guān)閉
恢復(fù)數(shù)據(jù)
如果需要恢復(fù)數(shù)據(jù),只需將備份文件 (dump.rdb) 移動(dòng)到 redis 安裝目錄并啟動(dòng)服務(wù)即可。獲取 redis 目錄可以使用 CONFIG GET DIR
redis 127.0.0.1:6379> CONFIG GET dir 1) "dir" 2) "/usr/local/redis/bin"2 redis 集群
兩個(gè)集群中的概念
鏡像:數(shù)據(jù)容量不變
切片:橫向擴(kuò)展
集群配置方案
方案一
主從復(fù)制
在從服務(wù)器上寫(xiě)入
redis > SLAVEOF 192.168.56.201 6379意思是,該從服務(wù)器是192.168.56.201 端口號(hào)為6379的服務(wù)器的slave
redis > SLAVEOF NO ONE這條命令寫(xiě)入后,獨(dú)立成為master,獸人永不為奴!
優(yōu)點(diǎn): 讀效率提升,但是寫(xiě)的效率還是和以前一樣,從服務(wù)器無(wú)法寫(xiě),只能讀
缺點(diǎn):如果主服務(wù)器宕機(jī),從服務(wù)器不能自動(dòng)切換
方案二
主從復(fù)制+ 哨兵
1-n個(gè)哨兵負(fù)責(zé)觀察1-n個(gè)主服務(wù)器
哨兵配置如下:
(1)配置哨兵的配置文件
在sentinel.conf中寫(xiě)(也可以自己創(chuàng)建一個(gè)文件,啟動(dòng)時(shí)綁定這個(gè)配置文件就可以了)
sentinel monitor mymaster 127.0.0.1 6379 2Sentinel monitor
監(jiān)視mymaster的主服務(wù)器,服務(wù)器ip和端口,將這個(gè)主服務(wù)器判斷為下線失效至少需要2個(gè)Sentinel同意,多數(shù)Sentinel同意才會(huì)執(zhí)行故障轉(zhuǎn)移
(2)啟動(dòng)哨兵
redis-server /path/to/sentinel.conf --sentinel
經(jīng)過(guò)測(cè)試,哨兵不是那么給力,如果向漫威的哨兵那么給力就好了
依舊沒(méi)有解決寫(xiě)的問(wèn)題
方案三
redis集群(redis3.0以上支持)
本次使用單機(jī)幾個(gè)程序來(lái)模擬集群
(1)Redis集群的每個(gè)節(jié)點(diǎn)都有兩種角色可選:主節(jié)點(diǎn)master node、從節(jié)點(diǎn)slave node。其中主節(jié)點(diǎn)用于存儲(chǔ)數(shù)據(jù),而從節(jié)點(diǎn)則是某個(gè)主節(jié)點(diǎn)的復(fù)制品
(2)故障轉(zhuǎn)移
(3)redis分片
集群將整個(gè)數(shù)據(jù)庫(kù)分為16384個(gè)槽位slot,所有key都數(shù)據(jù)這些slot中的一個(gè),key的槽位計(jì)算公式為slot_number****=crc16(key)%16384,其中crc16為16位的循環(huán)冗余校驗(yàn)和函數(shù)
(4)重定向
由于Redis集群無(wú)中心節(jié)點(diǎn),請(qǐng)求會(huì)發(fā)給任意主節(jié)點(diǎn)
主節(jié)點(diǎn)只會(huì)處理自己負(fù)責(zé)槽位的命令請(qǐng)求,其它槽位的命令請(qǐng)求,該主節(jié)點(diǎn)會(huì)返回客戶端一個(gè)轉(zhuǎn)向錯(cuò)誤
客戶端根據(jù)錯(cuò)誤中包含的地址和端口重新向正確的負(fù)責(zé)的主節(jié)點(diǎn)發(fā)起命令請(qǐng)求
(5)redis集群的安裝
0,準(zhǔn)備的包
redis-3.0.0.tar.gz , redis-3.0.0.gem
gcc ,tcl, ruby,rubygems
1 解壓安裝redis到/opt/cluster
2 安裝環(huán)境
yum -y install gcc tcl ruby rubygems3 安裝redis集群管理工具
gem install redis-3.3.0.gem4 設(shè)置redis的配置文件
1 daemonize yes 2 port 7001 3 cluster-enabled yes注釋放開(kāi) 4 bind 網(wǎng)卡 127.0.0.1 如果有多個(gè)網(wǎng)卡會(huì)傳遞信息,會(huì)很麻煩5 bin目錄重命名為redis1
并拷貝六份分別是:redis2/redis3/redis4/redis5/redis6
6 修改2,3,4,5,6中的端口號(hào)分別是7002/7003/7004/7005/7006
7 啟動(dòng)六個(gè)redis實(shí)例
./redis-server redis.conf(6次)
8 管理集群
./redis-trib.rb create --replicas 1 192.168.202.101:7001 192.168.202.101:7002 192.168.202.101:7003 192.168.202.101:7004 192.168.202.101:7005 192.168.202.101:7006ps: 1為每個(gè)master啟動(dòng)一個(gè)從節(jié)點(diǎn)
9 以集群方式連接集群
redis-cli -p 7001 -h 192.168.202.101 -c
總結(jié)
以上是生活随笔為你收集整理的BigBrother的大数据之旅Day 17 redis(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [原创]网站文章页面添加分享按钮,百度按
- 下一篇: re模块compile方法