Redis集群搭建

来源:http://www.cnblogs.com/jacklovejia/archive/2017/11/13/7827687.html
-Advertisement-
Play Games

1.什麼是Redis Redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前為止Redis支持的鍵值數據類型如 下:字元串類型, 散列類型, 列表類型, 集合類型, 有序集合類型。 2.Redis 安裝 redis 是 ...


  1.什麼是Redis

  Redis是用C語言開發的一個開源的高性能鍵值對(key-value)資料庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,目前為止Redis支持的鍵值數據類型如

下:字元串類型, 散列類型, 列表類型, 集合類型, 有序集合類型。

2.Redis 安裝

  redis 是C 語言開發, 安裝redis需要先將官網下載的源碼進行編譯,編譯依賴gcc環境,如果沒有gcc環境,需要安裝gccyum install gcc-c++

  註: redis3.0 版本 增加 redis 集群功能。

  下載地址: http://download.redis.io/releases/redis-3.0.0.tar.gz

  1) 我這裡先將下載好的包上傳到伺服器 /usr/local/src/redis 下

  2) 解壓 tar -zxvf redis-3.0.0.tar.gz    (z: 標識解壓格式,x:解壓縮,v:顯示解壓進度,f:解壓文件)

  3) 進入解壓後的目錄進行編譯

    cd /redis-3.0.0

    make

  4) 安裝到指定目錄 我這裡安裝到/usr/local/redis

     make PREFIX=/usr/local/redis insatll   註意大寫

  5) 複製配置文件到安裝目錄,

    redis編譯後會有一個預設的配置文件, 安裝目錄中沒有, 我們如果做配置需要把redis預設的配置文件拷貝到redis的安裝目錄下

    cp /usr/local/src/redis/redis-3.0.0/redis.conf  /usr/local/redis/bin

    

3.Redis啟動

  1) 前端模式啟動

  在安裝目錄bin下, 直接運行 ./redis-server 將以前端模式啟動,前端模式啟動的缺點是ssh命令視窗關閉則redis-server程式結束

    

 

   這裡我們可以看到redis預設埠為 6379, 此時在命令行下麵的游標會一直閃爍, 如果此時按下CTRL+C 會關閉服務

  

 

   2) 後端模式啟動

    需要將複製過來的redis配置文件 redis.conf  做修改

    [root@localhost bin]# vi redis.conf  在 37行 daemonize 改為 yes 以後端模式啟動(輸入i 進入編輯模式, 修改好以後按一下ESC,輸入":wq" 保存並退出)

    

    [root@localhost bin]# ./redis-server redis.conf 

    

    這裡可以看到redis 啟動了, 下麵咱們測試一下,

    [root@localhost bin]# ./redis-cli     執行命令 進入redis 命令號客戶端

    輸入ping

    

    標識我們的服務啟動成功沒有問題。

4. 集群搭建

  1) 說明

    1> 集群中每個redis服務作為一個redis節點, 各個節點之間彼此互聯(PING-->PONG 機制)

    2> 節點的fail是通過集群中超過半數的節點檢測失效時才生效.

    3> 客戶端與redis節點直連,不需要中間proxy.客戶端不需要連接集群所有節點,連接集群中任何一個可用節點即可

    4> redis-cluster把所有的物理節點映射到[0-16383]slot,cluster 負責維護node<->slot<->value

      Redis 集群中內置了 16384 個哈希槽,當需要在 Redis 集群中放置一個 key-value 時,redis 先對 key 使用 crc16 演算法算出一個結果,然後把結果對 16384 求餘數,這樣每個 key 都會對應一個編號在       0-16383 之間的哈希槽,redis 會根據節點數量大致均等的將哈希槽映射到不同的節點

 

    2) 配置redis集群需要一個ruby 環境

      redis集群管理工具redis-trib.rb依賴ruby環境,首先需要安裝ruby環境:

       安裝ruby

      yum install ruby

      yum install rubygems

      我們需要使用redis創建集群的腳本在redis的源碼包src中

      

      這個腳本運行需要一個redis-3.0.0.gem 運行環境包,

      我這裡將這個包放到/usr/local/src/redis 和redis源碼文件在一個目錄下,

      然後 安裝執行 gem install /usr/local/redis-3.0.0.gem

      

    3) redis 集群因為內置存在的投票容錯機制,即上述說明中的第二點,超過半數的節點檢測失效時才生效, 所以我們的redis集群至少有三個節點 ,

       這三個節點作為主節點, 當然我們還需要需要三個從節點, 這樣我們需要弄出6個redis, 我這裡只裝了一個虛擬機作為伺服器, 那我這裡先創建6個redis實例來模擬。

     創建redis實例, 這裡簡要說明一下, 我這裡在/usr/local 下麵創建一個文件下redis-cluster 文件夾

     mkdir redis-cluster

     cd /usr/local/redis/bin

       cp -r bin ../redis-cluster/redis01

       cd /usr/local/redis-cluster/redis01

       刪除文件夾中dump.rdb 文件刪除

       修改配置文件

      埠改為 7001,

      cluster-enabled yes 的註釋放開  預設是註釋掉的, 指定要做集群,

     之後就複製這個redis01 分別命名redis02,redis03,***redis06 同時修改埠分別為7002,7003,****7006 保存

    創建實例完成後, 把ruby腳本redis-trib.rb (在redis源碼src路徑下的) 複製到redis-cluster 目錄下

    在創建redis集群之前啟動這6個redis實例

    在/usr/local/redis-cluster 目錄下執行

    ./redis-trib.rb create --replicas 1 IP地址:7001 IP地址:7002 IP地址:7003 IP地址:7004 IP地址:7005  IP地址:7006

    提示輸入 yes  

    4) 測試redis集群

      因為redis集群是相互連接的, 我沒不需要一個個連接, 只需要連接redis實例中的一個就可以 執行以下命令

      [root@localhost redis-cluster]# redis01/redis-cli -h IP地址 -p 7001 -c 

      其中-c表示以集群方式連接redis-h指定ip地址,-p指定埠號

      

 

    

 

 

 

  

 

 

 

  

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • [20171113]修改表結構刪除列相關問題3.txt--//維護表結構刪除欄位一般都是先ALTER TABLE <table_name> SET UNUSED (<column_name>);--//然後等空閑時候刪除列.ALTER TABLE <table_name> DROP UNUSED C ...
  • 前言: 前兩天接到領導的任務,將一個系統A的客戶數據同步到另一個系統B中,以後客戶錄入入口只有A系統,B系統不提供錄入入口,因為各種原因不能使用介面方式A系統和B系統直接交互同步,只能通過資料庫重A庫同步到B庫。原想通過觸發器直接些過去的,但在跨伺服器方面遇到種種問題,穩定性太差最終放棄,選擇使用發 ...
  • 最近 在搭建 簡易的 大數據 偽分散式環境(hadoop2.8+hive2.2+hbase1.2+sqoop1.4.6) 在 由sqoop 導數mysql數據到hive 時候發生以下錯誤:執行 命令目錄為 $sqoop_home/bin hive 的 metadata庫 使用的是 mysql(初始化 ...
  • 轉自CSDN: 在寫資料庫sql的時候,我們往往很關心該sql語句的執行效率,如下小技巧可以幫助程式員簡單快速的得到某條或某幾條sql的執行時間. ...
  • -- mysql查詢本季度 -- 今天 select * from ticket_order_detail where to_days(use_time) = to_days(now()); -- 7天 SELECT *FROM ticket_order_detail where DATE_SUB( ...
  • 在做 數據分析(數據挖掘 或 機器學習)的時候,我們經常需要繪製一些統計相關的圖表,這些統計、繪圖的程式常常是跑在伺服器上的,可是伺服器出於性能和效率的考慮,通常都是沒有安裝圖形化界面的,於是這些統計、繪圖的程式在伺服器上壓根兒就跑不起來,或者無法直接顯示出來,這就很尷尬了!這裡咪博士教大家,如何通 ...
  • 之前給 Chrome 裝了 Flash 插件,今天看網頁的時候提示更新。回想了一下搜官網、選版本、下載包、解壓包、移文件的經典步驟,想想還是找個自動更新的方法好一點,不然一回又一回地重覆來就有點煩了。 裝一個 Flash 的安裝器即可~ 然後重啟瀏覽器,檢查一下 Flash 自動更新到最新版了。 參 ...
  • yum中的$releasever變數是取redhat-release-server rpm包的屬性值( %{version})。 [root@ldap01 ~]# rpm -q --qf %{version} redhat-release-server;echo 6Server [root@ldap ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...