1. 程式人生 > >Redis的叢集搭建與Redis與spring整合

Redis的叢集搭建與Redis與spring整合

叢集: 高可用,滿足高併發, 把資料分佈在不同的節點上,提高單個節點的效能

1.redis叢集

架構細節: (1)所有的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會根據節點數量大致均等的將雜湊槽對映到不同的節點 叢集中應該至少有三個節點,每個節點有一備份節點。需要6臺伺服器。 搭建偽分散式,需要6個redis例項。

2.搭建叢集的步驟:

1.正常安裝後在redis.conf 檔案中修改配置: 2.修改埠號: 建立6redis例項指定埠(如從70017006) 3.修改叢集策略: 修改redis.conf開啟Cluster-enable yes
前面的註釋。 4.需要一個ruby指令碼。在redis原始碼資料夾下的src目錄下。redis-trib.rb 5.redis-trib.rb檔案複製到redis-cluster目錄下。 6.執行ruby指令碼之前,需要安裝ruby環境。 1yum install ruby 2yum install rubygems 3、安裝redis-trib.rb執行依賴的ruby的包。   [[email protected] ~]# gem install redis-3.0.0.gem 7:啟動所有的redis例項。 8:使用redis-trib.rb建立叢集。 ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005  192.168.25.153:7006
使用客戶端連線叢集: redis01/redis-cli -p 7001-c 如何使用redisjava客戶端 需要使用Jedis連線redis伺服器。

3.叢集版使用Jedis

@Test publicvoid testJedisCluster()throws Exception { //建立一個JedisCluster物件           Set<HostAndPort>nodes =new HashSet<>(); nodes.add(newHostAndPort("192.168.25.153", 7001)); nodes.add(newHostAndPort("192.168.25.153", 7002)); nodes.add(newHostAndPort("192.168.25.153", 7003)); nodes.add(newHostAndPort("192.168.25.153", 7004)); nodes.add(newHostAndPort("192.168.25.153", 7005)); nodes.add(newHostAndPort("192.168.25.153", 7006)); //在nodes中指定每個節點的地址 //jedisCluster在系統中是單例的。           JedisCluster jedisCluster =new JedisCluster(nodes); jedisCluster.set("name","zhangsan"); jedisCluster.set("value","100");           String name =jedisCluster.get("name");           String value =jedisCluster.get("value");           System.out.println(name);           System.out.println(value); //系統關閉時關閉jedisCluster jedisCluster.close();      }

4.專案中使用jedis

思路:建立一個redis操作的介面。分別建立兩個實現類對應redis的單機版和叢集版。當使用單機版redis時,配置單機版的實現類,當使用叢集版本的時候,配置叢集版的實現類。 單機版: 見java操作redis 叢集版: publicclass JedisClientClusterimplements JedisClient { @Autowired private JedisClusterjedisCluster; @Override public String set(Stringkey, Stringvalue) { returnjedisCluster.set(key,value);      } @Override public String get(Stringkey) { returnjedisCluster.get(key);      } @Override public Long hset(Stringkey, Stringitem, Stringvalue) { returnjedisCluster.hset(key,item,value);      } @Override public String hget(Stringkey, Stringitem) { returnjedisCluster.hget(key,item);      } @Override public Long incr(Stringkey) { returnjedisCluster.incr(key);      } @Override public Long decr(Stringkey) { returnjedisCluster.decr(key);      } @Override public Long expire(Stringkey,intsecond) { returnjedisCluster.expire(key,second);      } @Override public Long ttl(Stringkey) { returnjedisCluster.ttl(key);      } }

5.Redis的Spring的配置

<!-- 包掃描器,掃描帶@Service註解的類 --> <context:component-scanbase-package="com.taotao.rest.service"></context:component-scan>     <!-- 配置redis客戶端單機版 --> <beanid="jedisPool"class="redis.clients.jedis.JedisPool"> <constructor-argname="host"value="192.168.25.153"></constructor-arg> <constructor-argname="port"value="6379"></constructor-arg> </bean> <!-- 配置redis客戶端實現類 --> <beanid="jedisClientSingle"class="com.taotao.rest.component.impl.JedisClientSingle"/>      <!-- 配置redis客戶端叢集版 --> <!-- <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">           <constructor-arg>                <set>                     <bean class="redis.clients.jedis.HostAndPort">                          <constructor-arg name="host" value="192.168.25.153"/>                          <constructor-arg name="port" value="7001"/>                     </bean>                     <bean class="redis.clients.jedis.HostAndPort">                          <constructor-arg name="host" value="192.168.25.153"/>                          <constructor-arg name="port" value="7002"/>                     </bean>                     <bean class="redis.clients.jedis.HostAndPort">                          <constructor-arg name="host" value="192.168.25.153"/>                          <constructor-arg name="port" value="7003"/>                     </bean>                     <bean class="redis.clients.jedis.HostAndPort">                          <constructor-arg name="host" value="192.168.25.153"/>                          <constructor-arg name="port" value="7004"/>                     </bean>                     <bean class="redis.clients.jedis.HostAndPort">                          <constructor-arg name="host" value="192.168.25.153"/>                          <constructor-arg name="port" value="7005"/>                     </bean>                     <bean class="redis.clients.jedis.HostAndPort">                          <constructor-arg name="host" value="192.168.25.153"/>                          <constructor-arg name="port" value="7006"/>                     </bean>                </set>           </constructor-arg>      </bean>      <bean id="jedisClientCluster" class="com.taotao.rest.component.impl.JedisClientCluster"/> --> </beans> 測試: publicvoid testJedisClientSpring()throws Exception { //建立一個spring容器           ApplicationContextapplicationContext =new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml"); //從容器中獲得JedisClient物件           JedisClientjedisClient =applicationContext.getBean(JedisClient.class); //jedisClient操作redis jedisClient.set("cliet1","1000");           Stringstring =jedisClient.get("cliet1");           System.out.println(string);  }

相關推薦

Redis叢集搭建Redis Cluster實踐

之前一直有用redis,但也一直停留在用的階段,自己也單機部署過玩玩,但總感覺不深入,所以現在繼續研究研究redis叢集,下面就根據自己學習實踐,記錄下使用Redis官網提供的Redis叢集方案; Redis Cluster背景介紹 Redis

redis叢集搭建springboot整合

redis叢集裡面的坑實在太多了,一步錯,步步錯,經過兩個不眠夜終於把這個坑給填上了,由於是在測試,所以以單機版叢集為例,下面就把搭建過程總結一下。 首先,有一個檔案大家必須要找好,就是redis-trib.rb,如圖: 大家網上自己找也好或者去這個地址下載夜行,需要一點資源分:https:

Redis叢集搭建維護

一、概述     Redis3.0版本之後支援Cluster. 二、redis cluster安裝     1、下載和解包 cd /usr/local/ wget http://download.redis.io/releases/re

JavaEE進階——Redis叢集搭建快取實現

一、Redis簡介 ​ Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Re

Linux Redis叢集搭建簡單使用

介紹安裝環境與版本 用兩臺虛擬機器模擬6個節點,一臺機器3個節點,創建出3 master、3 salve 環境。 redis 採用 redis-3.2.4 版本。 兩臺虛擬機器都是 CentOS ,一臺 CentOS6.5 (IP:192.168.3

Linux下Redis叢集搭建測試

叢集搭建 準備條件 一臺已經配置好Redis服務的虛擬機器,地址為: 192.168.2.100:6379 克隆6臺,使用命令nmtui修改地址分別為: 192.168.2.101 192.168.2.102 192.168.2.103 1

Redis 叢集搭建連線

1.Redis 安裝 2.Redis 叢集介紹 2.1 redis-cluster架構圖 edis-cluster把所有的物理節點對映到[0-16383]slot上,cluster 負責維護node<->slot<->value Re

redis入門+基於Ruby的redis叢集搭建+spring框架整合

定義      redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set --有序集合)和hash(雜湊型別)。這些資料型別都支援p

Redis叢集簡介《Redis開發運維讀書筆記》

Redis叢集 資料分佈 Redis採用雜湊分割槽規則,常見的雜湊分割槽規則如下: 1)節點取餘分割槽:hash(key)%N = key雖在的節點 2)一致性雜湊分割槽: 為系統的每個節點分配一個token,這些token組成一個hash環。資料讀寫執行節點查

Redis 叢集的合縱連橫

之前一篇寫了關於 Redis 的效能,這篇就寫寫我認為比效能更重要的擴充套件性方面的主題。 如果再給我一次回到好幾年前的機會,對於使用 Redis 我一開始就要好好考慮將來的擴充套件問題。就像我們做資料庫分庫分表,一旦決策了分庫分表,通常一次就會分到位,比

redis叢集的遠端管理監控

1、redis叢集的作用及重要性         目前大部分的網際網路平臺,都會用到Redis記憶體資料庫,以提高響應速度,提升使用者使用體驗。  為了實現Redis的高可用,通常都會佈署Redis叢集,使用Redis-Sentinel實現叢集的監控、自動切換、故障轉移等。 

Redis系列(三):Redis叢集的水平擴充套件伸縮

一、Redis叢集的水平擴充套件   Redis3.0版本以後,有了叢集的功能,提供了比之前版本的哨兵模式更高的效能與可用性,但是叢集的水平擴充套件卻比較麻煩,接下來介紹下Redis高可用叢集如何做水平擴充套件,在原叢集的6個節點的基礎上新增2個節點,由原來的3主3從變成4主4從,原先的3主3從部署詳見Red

Redis 叢集搭建簡述

環境 作業系統:CentOS 7.3 redis版本:Redis 3.2.8 兩臺主機,每臺主機上3個節點 基本步驟 下載解壓安裝包 # 下載解壓安裝包 wget http://download.redis.io/releases/redis-3.2.8.tar.gz

搭建redis叢集 Linux環境redis叢集搭建

Linux環境redis叢集搭建 集群后tomcat context.xml的配置 <!-- 叢集配置--> <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve"

Window7下Redis叢集搭建

在Windows系統下搭建Redis叢集:     需要4個部件:     Redis、Ruby語言執行環境、Redis的Ruby驅動redis-xxxx.gem、建立Redis叢集的工具redis-trib.rb      安裝Redis,並執行3個例

Redis學習】--Redis叢集搭建

文章目錄 1. Redis部署 1.1 安裝依賴環境 1.2 安裝 Redis 1.3 啟動Redis 前臺啟動: 後臺啟動: 1.4 測試客戶端可用情況:

redis叢集介紹、redis叢集搭建配置、redis叢集操作

一:redis叢集介紹 多個redis節點網路互聯,資料共享所有的節點都是一主一從(可以是多個從),其中從不提供服務,僅作為備用不支援同時處理多個鍵(如mset/mget),因為redis需要把鍵均勻分佈在各個節點上,併發量很高的情況下同時建立鍵值會降低效能並導致不可預測的行為。支援線上增加、刪除節點客戶端

多主機 Redis 叢集搭建

1、Redis安裝包 連結:https://pan.baidu.com/s/1VPm2RZFohhL3xLhCzfgBUg 密碼:qfn5 叢集環境: 192.168.195.129    7001、7002埠 192.168.195.128  &nbs

redis叢集搭建

Redis叢集 基本介紹 Redis 叢集是一個可以在多個 Redis 節點之間進行資料共享的設施installation。 Redis 叢集不支援那些需要同時處理多個鍵的 Redis 命令, 因為執行這些命令需要在多個 Redis 節點之間移動資料, 並且在高負載的情

Redis 叢集搭建詳細指南

Redis 叢集簡介 Redis 是一個開源的 key-value 儲存系統,由於出眾的效能,大部分網際網路企業都用來做伺服器端快取。Redis 在3.0版本前只支援單例項模式,雖然支援主從模式、哨兵模式部署來解決單點故障,但是現在網際網路企業動輒大幾百G的資料,可完全是沒