1. 程式人生 > >Redis學習筆記之多機資料庫

Redis學習筆記之多機資料庫

1.複製

  完整重同步,從伺服器完全複製主伺服器的資料,主要通過RDB檔案和單條命令傳輸(套接字連線)。

  部分重同步,主伺服器進行命令傳播的時候,不僅會把寫命令傳送給從伺服器,而且還會把寫命令放入複製積壓緩衝區中,當主從伺服器連線斷開又重新連線上的時候,從伺服器向主伺服器傳送PSYNC命令(引數包括複製偏移量伺服器執行ID)請求同步,主伺服器根據複製偏移量和伺服器執行ID向從伺服器回覆(只有當伺服器執行ID與主伺服器相同,複製偏移量在複製積壓緩衝區中能找到才進行部分重同步)。

2.Sentinel

  監視系統,是Redis的高可用性(HA)解決方案,由一個或多個Sentinel例項組成,負責監視所有的主伺服器及其從伺服器,當主伺服器下線之後,Sentinel會從下線主伺服器的從伺服器中選擇一個作為新的主伺服器。

  Sential通過命令連線傳送資訊到頻道,通過訂閱連線從頻道接收資訊

  主觀下線:Sentinel向伺服器傳送PING命令得到無效回覆,則Sentinel判定該伺服器主觀下線。

  客觀下線:Sentinel向其他連線該主觀下線伺服器的Sentinel詢問,如果回覆結果中判定下線(包括客觀和主觀下線)的數量達到一定程度就判定該伺服器客觀下線。

  選擇領頭Sentinel、選擇新的主伺服器

3.叢集(Redis Cluster)

  節點:一個節點就是一個執行在叢集模式下的Redis伺服器,會繼續使用所有在單機模式中使用的伺服器元件。每個節點都會使用clusterNode的資料結構來儲存自己的狀態,也會為其他節點建立一個對應的clusterNode的資料結構來儲存其他節點的狀態。

  槽:叢集的整個資料庫被分為16384個槽(slot),叢集中的每一個節點可以處理0~16384個槽,當資料庫中的16384個槽都有節點在處理時,叢集處於上線狀態(ok),否則處於下線狀態(fail)。clusterNode結構中會記錄節點負責處理哪些槽,clusterState結構中會記錄16384個槽的指派資訊。CRC16然後模16384取餘計算鍵屬於哪一個槽。

  對於Redis叢集技術還有:客戶端分片、代理分片(Twemproxy)

相關推薦

Redis學習筆記資料庫

1.複製   完整重同步,從伺服器完全複製主伺服器的資料,主要通過RDB檔案和單條命令傳輸(套接字連線)。   部分重同步,主伺服器進行命令傳播的時候,不僅會把寫命令傳送給從伺服器,而且還會把寫命令放入複製積壓緩衝區中,當主從伺服器連線斷開又重新連線上的時候,從伺服器向主伺服器傳送PSYNC命令(引數包括複製

JavaSE 學習筆記態(七)

會有 轉換 容易 per 不同 如何 person 特點 一句話 多 態:函數本身就具備多態性,某一種事物有不同的具體的體現。 體現:父類引用或者接口的引用指向了自己的子類對象。//Animal a = new Cat(); 多態的好處:提高了程序的擴展性。 多態的弊端

redis學習筆記linux單機版redis安裝

info 目錄 tar daemon exit 單機 技術分享 gre shutdown Redis安裝   下載最新穩定版本: 官網: https://redis.io/     第一步:將redis.tar.gz解壓:tar -zxvf redis-4.0.10.ta

redis學習筆記redis簡介

優先 消息隊列 使用 優先級 開頭 角色 redis 結構 redis命令 redis簡介 Redis是一個開源的,高性能的,基於鍵值對的緩存與存儲系統,通過設置各種鍵值數據類型來適應不同場景下的緩存與存儲需求。同事redis的諸多高層級功能使其可以勝任消息隊列,任務隊列

c++學習筆記檔案操作

每天進步一點點,努力奮鬥的小菜鳥。 曾經搞了好多次的C語言多檔案操作,都沒搞成功,昨天晚上終於搞成功了,雖然是簡單到爆的操作,但我還是挺高興的,哈哈哈。貼出來一方面怕自己忘,一方面若有初學者看到希望能對他們有點小小的幫助。現代數字訊號處理快要考試了,現在慌得一批,估計兩週以內會減少程式設計的時間

Mybatis學習筆記對一與一對關係

Mybatis一對多關係 一、資料庫與資料表的建立 學生與班級是一對多的關係,首先建立一個學生表 create table tb_student( -> id int not null auto_increment, -> name varchar(10)

Redis學習筆記分散式鎖

文章目錄 一、加鎖原因 1.1 加鎖方式 1.2 業務場景 二、原子操作 原子操作定義 2.1 context switch 三

Redis學習筆記Redis基本資料結構

Redis基礎資料結構 Redis有5種基本資料結構:String(字串)、list(列表)、set(集合)、hash(雜湊)、zset(有序集合) 字串string 字串型別是Redis的value最簡單的資料結構,類似與Java語言中的ArrayList(數字列表),不過在Redis裡String是一種動

Java學習筆記——執行緒

多執行緒程式設計 程式: 程序:一個程式執行就會產生一個程序 執行緒:程序的執行流程,一個程序至少有一個執行緒,稱為主執行緒 如:QQ聊著天,同時在聽音樂 一個程序可以有多個執行緒,多個執行緒共享同一個程序的資源 執行緒類:Tread 多執行緒程式設計: 方式一:繼承Thread (1)&n

Redis學習筆記基本資料結構

Redis基礎資料結構 Redis有5種基本資料結構:String(字串)、list(列表)、set(集合)、hash(雜湊)、zset(有序集合) 字串string 字串型別是Redis的value最簡單的資料結構,類似與Java語言中的ArrayList(數

Redis學習筆記十:Redis用作訊息佇列

package org.yamikaze.redis.messsage.subscribe; import org.yamikaze.redis.test.MyJedisFactory; import redis.clients.jedis.Jedis; import redis.clients.jedis

MFC學習筆記對話方塊中使用定時器

MFC菜鳥第一次發貼,請各位高人指教:我需要做一個基於對話方塊的程式,主對話方塊TimerTryDlg上就兩個按鈕,確定鈕按下後執行訊息處理OnFirstOK(),先初始化定時器,再開啟有模式對話方塊TestDlg,定時器時間到了執行OnTimer-在子對話方塊上的一個靜態控制元件上畫點,但OnTimer在

Redis學習筆記二:Redis的資料儲存結構

Redis與Mysql等關係型資料庫的第一點區別就是Redis的資料儲存結構,Mysql等關係型資料庫以表的形式存放資料,而Redis提供Key-Value形式的儲存格式。與Mysql等資料庫的第二

Java基礎學習筆記執行緒

Java基礎之多執行緒 1.程序與執行緒 1)程序和執行緒都是一個時間段的描述,是CPU工作時間段的描述。 程序與執行緒都能夠完成多工 你打開了QQ,你開了一個程序,你打開了微信,你又開了一個程序,在QQ的這個程序裡,你與一個人的聊天開一個執行緒,

[C#學習筆記執行緒2]執行緒同步與併發訪問共享資源工具—Lock、Monitor、Mutex、Semaphore

“執行緒同步”的含義         當一個程序啟動了多個執行緒時,如果需要控制這些執行緒的推進順序(比如A執行緒必須等待B和C執行緒執行完畢之後才能繼續執行),則稱這些執行緒需要進行“執行緒同步(thread synchronization)”。         執行緒

Hibernate 學習筆記 關係 及其 級聯操作

一、多對多配置 User.java /** * Created by Donald on 2016/11/20. */ public class User { priva

android學習筆記執行緒(二)

這個需要在輸出,點選start後會隔一會輸出一行字,點end會結束輸出。 Code package tk.handleractivity; import android.app.Activity; import android.os.Bundle; import andr

Redis學習筆記延時隊列

println itl bre type 列表 ring hist mat lib 目錄 一、業務場景 二、Redis延時隊列 一、業務場景 所謂延時隊列就是延時的消息隊列,

Mybatis學習筆記---表查詢(1)

Mybatis多表查詢(1) (一)舉例(使用者和賬戶) 一個使用者可以有多個賬戶 一個賬戶只能屬於一個使用者(多個賬戶也可以屬於同一個使用者) (二)步驟 1、建立兩張表:使用者表,賬戶表,讓使用者表和賬戶表之間具備一對多的關係:需要使用外來鍵在賬戶表中新增 2、建立兩個實體類:使用者實體類和賬戶實體類,讓

Redis學習筆記(七) 資料庫

Redis 伺服器將所有的資料庫都儲存在伺服器狀態redisServer結構的db陣列中,db陣列的每個項都是一個redisDB: struct redisServer{ //一個數組儲存著伺服器中的所有資料庫 redisDb *db; //資料庫的個數 int dbnum; } dbnu