當前位置:首頁 » 雲伺服器 » 為什麼redis分布式必須三台伺服器

為什麼redis分布式必須三台伺服器

發布時間: 2025-07-20 23:58:34

① redis 的一主二從三哨兵模式

Redis一主二從三哨兵模式是一種高可用性的部署策略,旨在保障Redis在宕機時仍然可提供服務。通過配置一台主伺服器以及兩台從伺服器,並部署三台哨兵實例,系統能夠在主伺服器故障時,自動將從伺服器提升為主伺服器,確保服務的連續性。


配置方案如下:



  • 主伺服器IP地址:127.0.0.1 6001


  • 兩台從伺服器IP地址:127.0.0.1 6002 和 127.0.0.1 6003


  • 三台哨兵伺服器IP地址:127.0.0.1 16001, 127.0.0.1 16002, 127.0.0.1 16003



配置文件修改涉及:



  • 將`redis.conf`復制為`redis1.conf`和`redis2.conf`

  • 編輯`redis.conf`文件,進行如下配置:


    • `bind 192.168.1.88 127.0.0.1`

    • `protected-mode no`

    • `daemonize yes`

    • `port 6001`

    • `pidfile "/var/run/redis_6001.pid"`


  • 編輯`redis1.conf`和`redis2.conf`文件,分別進行如下配置:


    • `bind 192.168.1.88 127.0.0.1`

    • `protected-mode no`

    • `daemonize yes`

    • `port 6002` 或 `6003`

    • `pidfile "/var/run/redis_6002.pid" 或 "/var/run/redis_6003.pid"`

    • `slaveof 127.0.0.1 6001`


  • 編輯哨兵配置文件,包括`sentinel.conf`、`sentinel1.conf`和`sentinel2.conf`,進行如下配置:


    • `port 16001`

    • `daemonize yes`

    • `sentinel monitor mymaster 127.0.0.1 6001 2`


  • 修改哨兵配置文件,分別進行如下配置:


    • `port 16002` 或 `16003`

    • `sentinel monitor mymaster 127.0.0.1 6001 2`



啟動服務:



  • 使用`./bin/redis-server`命令啟動`redis.conf`、`redis1.conf`和`redis2.conf`文件。

  • 使用`./bin/redis-sentinel`命令啟動哨兵服務。


驗證配置:



  • 通過命令`./bin/redis-cli -p 16001`連接哨兵,運行`sentinel master mymaster`以驗證主從狀態。

  • 手動關閉主伺服器,觀察從伺服器是否能升級為主伺服器。

  • 測試數據設置與獲取,確認從伺服器間的數據同步。


哨兵的作用包括:



  • 狀態監控:監控主伺服器狀態。


  • 故障轉移:主伺服器異常時,自動提升從伺服器為新主伺服器。


  • 配置調整:主從切換後,相關配置文件(如`redis.conf`、`redis1.conf`和`redis2.conf`以及`sentinel.conf`)自動更新。



學習資源:



  • Redis Sentinel官方文檔

  • Redis哨兵機制原理及配置

② 濡備綍浣跨敤redis瀹炵幇鍒嗗竷寮忛攣鍔熻兘錛

鐢變簬redis鏄鍗曠嚎紼嬬殑涓旀ц兘寰堝揩錛屾墍浠ユ瘮杈冮傚悎鍋氬叏灞鍒嗗竷寮忛攣銆

鍩烘湰嫻佺▼灝辨槸鍦ㄦ搷浣滃彲鑳芥煇涓鍏ㄥ矓鍐茬獊璧勬簮鐨勬椂鍊欙紝浣跨敤涓涓鍏ㄥ矓鍞涓key鏉ュ垽鏂鏄鍚︽湁鍏朵粬綰跨▼鍗犵敤浜嗚祫婧愶紝濡傛灉鏈夊叾浠栫嚎紼嬪崰鐢錛屽垯鎶ラ敊閫鍑烘垨鑰呭驚鐜絳夊緟銆傚傛灉娌℃湁鍏朵粬綰跨▼鍗犵敤錛屽垯灝卞彲浠ラ氳繃娣誨姞鍒嗗竷寮忛攣鏉ュ崰鐢ㄨ繖涓璧勬簮錛岀劧鍚庡啀鎵ц屽悗緇鐨勪換鍔★紝鍦ㄤ換鍔℃墽琛屽畬鎴愪箣鍚庯紝鍐嶉噴鏀懼垎甯冨紡閿侊紝鍏朵粬綰跨▼灝卞彲浠ョ戶緇浣跨敤榪欎釜璧勬簮浜嗐

閭d箞閫氳繃redis鍔犻攣鐨勫姩浣滄槸浠涔堝憿錛

綆鍗曞姞閿佸懡浠わ細
鍛戒護鏄錛歴etnx

鍐呴儴鐨勫疄鐜版満鍒跺氨鏄鍒ゆ柇榪欎釜key浣嶇疆鏄涓嶆槸鏈夋暟鎹錛屾病鏈夋暟鎹灝辮劇疆鎴恦alue榪斿洖錛屾湁鏁版嵁灝辮繑鍥炰竴涓鐗規畩鏁板箋

浣嗘槸榪欓噷鏈変竴涓闂棰樻槸錛屽傛灉鍗犵敤璧勬簮鐨勭嚎紼嬮敊璇閫鍑轟簡錛屾病鏈夋潵寰楀強閲婃斁鍒嗗竷寮忛攣錛岃繖涓閿佸氨琚姘歌繙鐨勫崰鐢ㄤ簡

鏀硅繘鐗堢殑鍔犻攣錛
鍛戒護鏄錛1. setnx 2. expire

娣誨姞鍒嗗竷寮忛攣鐨勫悓鏃訛紝娣誨姞涓涓閿侀攣榪囨湡鐨勬椂闂淬傝繖鏍鳳紝褰撳姞閿佺嚎紼嬮鍑轟箣鍚庯紝鑷沖皯絳変竴孌墊椂闂翠箣鍚庯紝閿佹槸鏈夋満浼氶噴鏀炬帀鐨勩

榪欓噷鏈変竴涓灝忛棶棰樻槸錛岃繖涓や釜鍛戒護鏄鍒嗗紑鎵ц岀殑錛屼笉鏄鍘熷瓙鎿嶄綔銆傞偅涔堝氨瀛樺湪鐞嗚轟笂鏉ヨ達紝絎涓涓鍛戒護鎵ц屽畬涔嬪悗錛屽氨鍑虹幇閿欒錛屾潵涓嶅強鎵ц宔xpire鍛戒護鐨勫彲鑳斤紝涓縐嶅姙娉曟槸鑷宸卞啓lua鑴氭湰錛屽彲浠ュ疄鐜板氭潯鍛戒護鐨勫師瀛愬寲鎵ц屻備竴縐嶅姙娉曟槸寮曠敤涓浜涘紑婧愬簱銆傚湪2.8鐗堟湰涔嬪悗錛宺edis涓轟簡瑙e喅榪欎釜闂棰橈紝鎻愪緵浜嗗畼鏂圭増鐨勮В娉曪紝灝辨槸鍛戒護錛歴et key value nx expireTimeNum ex錛屽皢涓婅堪涓や釜鍛戒護鍚堝苟鎴愪簡涓涓鍛戒護銆

鏈変簡榪囨湡鏃墮棿涔嬪悗瑙e喅浜嗕竴閮ㄥ垎闂棰橈紝浣嗘槸涔熸湁鍙鑳藉嚭鐜伴攣閮借繃鏈熶簡錛屼絾鏄涓闂存墽琛岀殑浠誨姟榪樻病鏈夌粨鏉燂紝絎涓涓綰跨▼榪樺湪鎵ц屼簡錛岀浜屼釜綰跨▼宸茬粡鎷垮埌閿佸紑濮嬫墽琛屼簡錛岄偅涔堣繖鏃跺欑涓涓綰跨▼濡傛灉鎵ц屽畬鎴愪箣鍚庯紝閭d箞灝變細灝嗙浜屼釜綰跨▼鐨勯攣閲婃斁鎺変簡銆傜浜屼釜綰跨▼閲婃斁閿佺殑鏃跺欙紝瑕佷笉鐒跺嚭閿欙紝瑕佷笉鐒舵槸閲婃斁鐨勫叾浠栫嚎紼嬬殑閿侊紝榪欐牱涔熶細鍜岄勬湡涓嶇︺

濡傛灉鍗曠函鍦拌佽В鍐寵繖涓闂棰樼殑璇濓紝鍙浠ュ湪璁劇疆value鐨勬椂鍊欎嬌鐢ㄤ竴涓闅忔満鏁幫紝閲婃斁閿佺殑鏃跺欙紝鍏堝垽鏂榪欎釜闅忔満鏁版槸鍚︿竴鑷達紝濡傛灉涓鑷村啀鍒犻櫎閿侊紝鍚﹀垯灝遍鍑恆備絾鏄鍒ゆ柇value鍜屽垹闄key涔熶笉鏄涓涓鍘熷瓙鎿嶄綔錛岃繖鏃跺欏氨闇瑕佷嬌鐢╨ua鑴氭湰浜嗐

涓婇潰鐨勬柟妗堜緷鐒朵笉鑳借В鍐寵秴鏃墮噴鏀劇殑闂棰橈紝渚濈劧榪濊儗鍒嗗竷寮忛攣鐨勫垵琛楓傛庝箞鍔炰簡錛

瑙i樻濊礬鏄鍙﹀栧惎鍔ㄤ竴涓綰跨▼錛屽畠鐨勪換鍔″氨鏄姣忛殧涓孌墊椂闂村垽鏂涓涓嬪傛灉鍙戠幇褰撳墠綰跨▼鐨勪換鍔″揩榪囨湡浜嗚繕娌℃湁瀹屾垚錛屽垯瀹氭湡緇欏綋鍓嶇嚎紼嬬殑閿佺畫涓鏈熴

鏈変釜寮婧愬簱瑙e喅浜嗚繖涓闂棰橈紝瀹冨ぇ姒傜巼浼氭瘮浣犲疄鐜板緱鏇村ソ涓浜涖傝繖涓搴撳氨鏄痳edisson錛岄潪甯稿ソ璁幫紝灝辨槸redis鐨勫効瀛恠on錛岃繛璧鋒潵灝辨槸reidsson錛岃櫧鐒跺彲鑳戒笉鏄浜茬殑錛屼絾鏄涔熻凍澶熶簡銆

榪欎釜搴撻噷闈㈡湁涓涓緇勪歡鏄痺atchdog錛岀洿璇戣繃鏉ュ氨鏄鐪嬮棬鐙楋紝瀹冪殑浣滅敤灝辨槸姣忛殧涓孌墊椂闂村垽鏂鐨勩

鍐嶇戶緇鎬濊冿紝榪樻湁涓涓鏇存瀬絝鐨勯棶棰樻槸錛宺edis濡傛灉鏄鍗曡妭鐐圭殑錛屽畠瀹曟満浜嗭紱鎴栬呮槸涓誨囪妭鐐圭殑錛屼絾鏄澶囦喚鑺傜偣榪樻病鏈夋潵寰楀強鍚屾ヤ富鑺傜偣鐨勬暟鎹錛屼富鑺傜偣鎷垮埌閿佷箣鍚庯紝鍦ㄥ悓姝ユ暟鎹涔嬪墠灝遍┈涓婂畷鏈轟簡錛屽垯涔熸湁鍙鑳藉嚭鐜伴攣涓嶄綇鐨勯棶棰樸傚傛灉璁や負榪欐槸涓涓闂棰橈紝鎯寵佽В鍐寵繖涓闂棰橈紝榪欎釜闂棰樻庝箞瑙e喅浜嗭紵

鎬濊礬鏄鍦ㄥ姞閿佺殑鏃跺欏氬姞閿佸嚑鍙皉edis鏈嶅姟鍣錛岄氬父鎯呭喌涓媟edis閮ㄧ講鐨勬椂鍊欐槸2n+1鍙幫紝閭d箞鍦ㄥ姞閿佺殑鏃跺欓渶瑕佷繚璇佽繃鍗婃暟鏈嶅姟鍣ㄥ姞閿佹垚鍔熶簡錛屼篃灝辨槸璇磏+1鍙版湇鍔″櫒銆傝繖鏃跺欓櫎闈炴暣涓闆嗙兢閮戒笉鍙鐢ㄤ簡錛屽垯榪欎釜瀹夊叏鎬у皢澶у箙搴︽彁鍗囥

榪欎釜闂棰樹篃鏈夊紑婧愬簱瑙e喅浜嗭紝灝辨槸redis綰㈤攣銆

涓嬩竴涓闂棰樻槸鍒嗗竷寮忛攣鍙浠ラ噸鍏ヤ箞錛

濡傛灉鎯寵佸疄鐜板彲閲嶅叆鐨勫垎甯冨紡閿佺殑璇濓紝闇瑕佸湪璁劇疆value鐨勬椂鍊欏姞涓婄嚎紼嬩俊鎮鍜屽姞閿佹℃暟鐨勪俊鎮銆備絾鏄榪欐槸綆鍗曠殑鎬濊礬錛屽傛灉鍔犱笂榪囨湡鏃墮棿絳夐棶棰樹箣鍚庯紝鍙閲嶅叆閿佸氨鍙鑳芥瘮杈冨嶆潅浜嗐

③ redis實例是什麼意思

Redis實例是指在一台或多台伺服器上運行的一個或多個Redis進程的實例。以下是關於Redis實例的詳細解釋:

  • 獨立性:每個Redis實例都是獨立的,它們之間不共享任何數據。這意味著在一個Redis實例中存儲的數據,在另一個Redis實例中是無法訪問的。

  • 創建方式:Redis實例的創建可以通過在單個物理伺服器上啟動多個進程,或者在多個分布式伺服器上運行Redis進程來實現。這種方式使得Redis可以根據需求進行擴展,以適應不同的應用場景。

  • 類型:Redis實例分為主節點從節點兩種類型。主節點是Redis實例的控制節點,負責接收來自客戶端的請求,並將這些請求轉發給Redis集群中的各個節點。而從節點則是一種只讀節點,它從主節點中復制數據,以增加Redis的可用性和解決主節點負載壓力等問題。

  • 部署與配置:在Redis集群中,Redis實例的部署和配置非常重要。為了保證Redis實例的高可用性、性能和安全性,需要設置適當的Redis參數和調整系統資源的使用。例如,設置TCP KeepAlive可以避免長時間未使用的Redis實例導致的連接問題;啟用密碼驗證、TLS或其他數據加密機制可以保護Redis數據的安全。

  • 重要性:合理的Redis實例配置是保證Redis服務能夠高效穩定地運行的關鍵。因此,在創建和配置Redis實例時,需要充分考慮實例的數量、對象大小、內存容量、網路帶寬等因素,以確保Redis能夠滿足應用的需求。

熱點內容
編譯android的工具叫什麼 發布:2025-07-21 04:34:29 瀏覽:831
怎麼使用公網ip開mc伺服器 發布:2025-07-21 04:32:59 瀏覽:776
app雲伺服器 發布:2025-07-21 04:32:59 瀏覽:204
為什麼安卓連接不了車 發布:2025-07-21 04:23:33 瀏覽:731
國內存儲廠商有哪些 發布:2025-07-21 04:15:38 瀏覽:278
乙太網控制器如何配置 發布:2025-07-21 04:15:38 瀏覽:632
礦大演算法 發布:2025-07-21 04:14:03 瀏覽:119
計算機中訪問速度最快的存儲器是 發布:2025-07-21 04:12:35 瀏覽:331
安卓怎麼登陸instagram 發布:2025-07-21 04:10:54 瀏覽:373
安卓王者榮耀主播都用的什麼手機 發布:2025-07-21 04:08:45 瀏覽:542