1. 程式人生 > >SDR(spring.data.redis)與Sentinel高可用叢集Redis客戶端Jedis配置

SDR(spring.data.redis)與Sentinel高可用叢集Redis客戶端Jedis配置

依賴

 <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId
>
spring-test</artifactId> <version>4.3.3.RELEASE</version> </dependency> <!--sdr--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version> 1.7.2.RELEASE</version
>
</dependency> <!--jedis--> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>

spring配置(redis.properties檔案自行配置)

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
>
<property name="locations"> <list> <value>classpath*:redis.properties</value> </list> </property> </bean> <!-- redis屬性配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${redis.pool.maxTotal}" /> <property name="maxIdle" value="${redis.pool.maxIdle}" /> <property name="numTestsPerEvictionRun" value="${redis.pool.numTestsPerEvictionRun}" /> <property name="timeBetweenEvictionRunsMillis" value="${redis.pool.timeBetweenEvictionRunsMillis}" /> <property name="minEvictableIdleTimeMillis" value="${redis.pool.minEvictableIdleTimeMillis}" /> <property name="softMinEvictableIdleTimeMillis" value="${redis.pool.softMinEvictableIdleTimeMillis}" /> <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}" /> <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" /> </bean> <!-- redis叢集配置 哨兵架構 --> <bean id="redisSentinelConfiguration" class="org.springframework.data.redis.connection.RedisSentinelConfiguration"> <property name="master"> <bean class="org.springframework.data.redis.connection.RedisNode"> <!--這個值要和Sentinel中指定的master的值一致,不然啟動時找不到Sentinel會報錯的--> <property name="name" value="${redis.master.name}"></property> </bean> </property> <!--記住了,這裡是指定Sentinel的IP和埠--> <property name="sentinels"> <set> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.sentinel.host1}"></constructor-arg> <constructor-arg name="port" value="${redis.sentinel.port1}"></constructor-arg> </bean> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.sentinel.host2}"></constructor-arg> <constructor-arg name="port" value="${redis.sentinel.port2}"></constructor-arg> </bean> </set> </property> </bean> <!--redis連線工廠--> <bean id="redisConnectionFactory" class="org.springframework.data.redis.connection.jedis.RedisConnectionFactory"> <constructor-arg name="sentinelConfig" ref="redisSentinelConfiguration"></constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"></constructor-arg> </bean> <!--redis模板--> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="redisConnectionFactory"></property> </bean>

Test

JedisSentinel叢集測試

JedisSentinel叢集測試


/**
 * Author: Starry.Teng
 * Email: [email protected]
 * Date: 17-8-14
 * Time: 下午8:26
 * Describe: Spring Jedis Sentinel 測試
 */
@RunWith(SpringRunner.class)
@ContextConfiguration(locations = {"classpath:sentinel.xml"})
public class SDRJedisSentinelTest {

    @Test
    public void sentinel(){
        System.out.print("SpringJedisSentinel叢集客戶端測試成果");
    }
}

執行列印:

八月 15, 2017 6:59:25 下午 redis.clients.jedis.JedisSentinelPool initSentinels
資訊: Trying to find master from available Sentinels...
八月 15, 2017 6:59:25 下午 redis.clients.jedis.JedisSentinelPool initSentinels
資訊: Redis master running at 127.0.0.1:8001, starting Sentinel listeners...
八月 15, 2017 6:59:25 下午 redis.clients.jedis.JedisSentinelPool initPool
資訊: Created JedisPool to master at 127.0.0.1:8001
SpringJedisSentinel叢集客戶端測試成果

tips:

  • 啟動前應該保證redis叢集伺服器開啟
  • 配合屬性檔案要正確
  • master-name必須與redis-sentinel中指定的一致

  • 筆者的redis.properties配置(僅供產考)github

相關推薦

SDR(spring.data.redis)Sentinel可用叢集Redis客戶Jedis配置

依賴 <dependency> <groupId>junit</groupId> <artifactId>junit<

Redis Sentinel可用叢集Java客戶

java客戶端Jedis在2.2.2及以上版本實現了對Sentinel的支援,只要是通過命令:redis-cli -h 192.168.110.71 -p 6000  sentinel get-master-addr-by-name shard_a1) "192.168.11

Redis Sentinel 可用叢集搭建(redis4.0)

前言 什麼是哨兵 Redis Sentinel出生於2012年,Redis 2.4穩定後首次釋出,它是一個旨在管理Redis叢集的系統。 哨兵的任務 監控(Monitoring):Sentinel會不斷地檢查你的主伺服器和從伺服器是否運作正常 提醒

redisredis哨兵和可用叢集

前言 Redis 的 主從複製 模式下,一旦 主節點 由於故障不能提供服務,需要手動將 從節點 晉升為 主節點,同時還要通知 客戶端 更新 主節點地址,這種故障處理方式從一定程度上是無法接受的。Redis 2.8 以後提供了 Redis Sentinel 哨兵機制 來解決這

Redis叢集 Java客戶Jedis的使用

Java客戶端Jedis  這裡只講Jedis常規用法和五種資料結構的方法(關於叢集的搭建以後再寫)      2.稍微修飾下    3.執行效果 4.相應的jar包(第一個不相容,沒用,junit4.4:@test 做測試所需) 二,redis資料型別(

redis知識盤點【陸】_客戶Jedis

系列文章:本篇文章主要介紹一下redis的客戶端Jedis。首先明確兩點:一、redis客戶端與服務端之間的通訊協議是在TCP協議之上構建的;二、Redis制定了RESP(REdis Serializa

Redis入門到可用(十八)——Redis Sentinel

tin In red edi info height 技術 wid sent 一、Redis Sentinel架構 Redis入門到高可用(十八)——Redis Sentinel

基於Sentinel(哨兵)搭建實現Redis可用叢集

概述 Redis哨兵為Redis提供了高可用性。實際上這意味著你可以使用哨兵模式建立一個可以不用人為干預而應對各種故障的Redis部署。 哨兵模式還提供了其他的附加功能,如監控,通知,為客戶端提供配置。 下面是在巨集觀層面上哨兵模式的功能列表: 監控:哨兵不斷的檢查mast

Redis可用叢集-哨兵模式(Redis-Sentinel)搭建配置教程【Windows環境】

No cross,no crown . 不經歷風雨,怎麼見彩虹。 Redis哨兵模式,用現在流行的話可以說就是一個“哨兵機器人”,給“哨兵機器人”進行相應的配置之後,這個”機器人”可以7*24小時工作,它能能夠自動幫助你做一些事情,如監控,提醒,自動處

Redis 可用叢集管理工具Sentinel

Sentinel是一個管理redis例項的工具,它可以實現對redis的監控、通知、自動故障轉移。sentinel不斷的檢測redis例項是否可以正常工作,通過API向其他程式報告redis的狀態,如果redis master不能工作,則會自動啟動故障轉移程序,將其中的一個

redis sentinel 可用(HA)方案部署,及python應用示例

簡介 介紹 redis sentinel(哨兵)叢集的部署,配置一主兩從的redis叢集,並通過 python 程式例項講解通過 redis sentinel 訪問叢集 什麼是哨兵(Sentinel)模式 Redis sentinel 為 Redis 叢集提供了高可

Redis 可用Redis Sentinel 主從複製故障轉移

Redis Sentinel  為 Redis 提供了高可用,可對複製叢集中進行監控、通知、故障轉移。 伺服器名稱:Centos222 , ip :192.168.1.222 ,主從角色:master 伺服器名稱:Centos224 , ip :192.168.1.22

基於jedisredis-sentinelredis主從、可用、sharding架構

最近專案上需要對Redis(目前redis用的是2.8版本)做高可用、叢集等優化,就擴充套件了jedis客戶端(MasterSlaveJedis、MasterSlaveJedisPool、ShardedMasterSlaveJedis、ShardedMasterSlaveJ

淺談小白如何讀懂Redis快取記憶體持久化並存及主從可用叢集

一、簡介Redis是一個基於鍵值(K-V)的快取記憶體軟體,和他具有相同功能的軟體有memcached,但其支援更為複雜的資料結構,例如:List,set,sorted set,同時redis具有永續性功能。redis究竟是什麼?對於不同的應用場合,對redis的理解也不相同

採用 redis主從 + 哨兵(sentinel) + vip漂移搭建一套redis可用叢集

一、單個例項 當系統中只有一臺redis執行時,一旦該redis掛了,會導致整個系統無法執行。 單個例項 二、備份 由於單臺redis出現單點故障,就會導致整個系統不可用,所以想到的辦法自然就是備份(一般工業界認為比較安全的備份數應該是3份)。當一臺redis出現問題了,另一臺

redis 系列25 哨兵Sentinel (可用演示 下)

服務端 查看進程 onf 只讀 usr cond set masters update 原文:redis 系列25 哨兵Sentinel (高可用演示 下)一. Sentinel 高可用環境準備   1.1 Sentinel 集群環境 環境 說明

【Linux(CentOS7)下應用的安裝部署】:八、搭建Redis+sentinel可用服務

Step 1:Redis的下載安裝 官網下載redis 解壓並安裝: [[email protected] ~]# cd /home/ [[email protected] home]# wget http://download.redis.io/r

Redis|Sentinel 可用架構

一 前言 Redis-Sentinel是Redis官方推薦的高可用性(HA)解決方案,當用Redis做Master-slave的高可用方案時,假如master宕機了,Redis本身(包括它的很多客戶端)都沒有實現自動進行主備切換,而Redis-sentinel本身也是一個獨立執行的程序,它能監控多個maste

Redis服務之可用元件sentinel

  前文我們瞭解了redis的常用資料型別相關命令的使用和說明,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13419690.html;今天我們來聊一下redis的高可用元件sentinel;首先來回顧下redis的主從同步,主從同步最主要的作用是讓master的資料

Spring cloud Eureka 服務治理(可用服務中心)

image 本地host available png active url 狀態 name spring 在微服務的架構中,我們考慮發生故障的情況,所以在生產環境中我們需要對服務中各個組件進行高可用部署。 Eureka Server 的高可用實際上就是將自己作為服務想其