之前部署redis以及搞分布式鎖開發,又把redis集群給學習了一遍。今天來記錄一下筆記。
redis集群是乙個提供多個redis例項間共享資料的程式集。
一台redis能夠提供的儲存能力是有限的,並且單機會有高可用性的弊端。所以就有了redis集群,redis集群會自動分割資料到不同node上;並且部分node不可達時能夠繼續提供服務。
redis集群沒有使用一致性hash演算法而使用hash槽進行資料分片。redis集群有15384個槽。每個node負責一部分槽。例如0-5000;5001-10000;10001-16384
每次操作通過對key進行15384取模得到乙個數字,用這個數字來匹配使用哪個對應的node。比如16386取模未1,屬於0-5000,放到這個段對應的redis節點上。當有新node加入,那麼會從每個機器上取一部分槽分配給他;有舊節點刪除時,會將他負責的槽分配給其他node。確保每個槽都可用。
redis集群中每個節點負責一部分hash槽,但如果這個node宕機,那麼當前集群中就有一部分hash槽不可用。為了避免這個問題,每個node應該有n-1個複製品。組成主從模式,比如a b c組整乙個集群;那麼a1 b1 c1 為各自的從節點。當有乙個master宕機後。還能有從節點轉為master節點繼續提供服務。除非集群中某個redis及其所有從節點都宕機。
由於redis採用主從複製時非同步複製。當set值成功後便立刻返回客戶端。再進行從節點的資料複製。這就導致當寫和返回客戶端成功後,資料還沒被傳送給從節點master就宕機了。那麼重新選舉的從節點就會出現資料的丟失問題。這也是為了效能和一致性之間做的權衡。
溫故知新 ROWTYPE
rowtype 相當於資料庫表裡的一行資料記錄的變數型別。declare 定義乙個emp表裡的一行記錄的資料型別的變數 v emp emp rowtype begin 查詢的emp表裡的資料列必須與v emp的列順序以及個數保持一致 select empno,ename,job,mgr,hireda...
vue 溫故知新
v cloak指令 解決變數閃爍問題 v if isshow 是插入或刪除節點 v show isshow 是隱藏或顯示節點 v bind data m msg 或 data m msg 繫結屬性 v bind key v.id 繫結乙個資料唯一值,用於虛擬dom演算法,優化渲染效率 v on cl...
溫故知新系列
我從事windows phone開發一年多來,終日忙於開發應用,每每有所收穫也沒有時間思考總結。最近實習即將結束,同時也看清了真實的生活,痛定思痛,決定好好整理自己所學所得,同時也靜下心來好好學習一下一直欠缺的知識。溫故而知新,可以為師矣。此番總結,不求為師,但求能看清自己,共勉共勉。此溫故知新系列...