最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Spring-data-redis如何操作rediscluster

小編給大家分享一下Spring-data-redis如何操作redis cluster,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)推出夏縣免費(fèi)做網(wǎng)站回饋大家。

一、利用Jedis來(lái)實(shí)現(xiàn)

通過(guò)Jedis操作Redis Cluster的模型可以參考Redis官網(wǎng),具體如下:

Set jedisClusterNodes = new HashSet();

     //Jedis Cluster will attempt to discover cluster nodes automatically

     jedisClusterNodes.add(new HostAndPort("10.96.5.183",9001));

     jedisClusterNodes.add(new HostAndPort("10.96.5.183",9002));

     jedisClusterNodes.add(new HostAndPort("10.96.5.183",9003));

    JedisCluster jc = new JedisCluster(jedisClusterNodes);

    jc.set("foo","bar");

    jc.get("foo");

二、利用spring-data-redis來(lái)實(shí)現(xiàn)

目前spring-data-redis已發(fā)布的主干版本都不能很好的支持Redis Cluster的新特性。為了解決此問(wèn)題spring-data-redis開(kāi)源項(xiàng)目組單獨(dú)拉了一個(gè)315分支,但截止到目前尚未發(fā)布。下面在分析spring-data-redis源碼的基礎(chǔ)上配置spring實(shí)現(xiàn)操作Redis Cluster.下面分別針對(duì)XML和注入的方式進(jìn)行說(shuō)明。

315分支gitHub下載路徑如下:https://github.com/spring-projects/spring-data-redis

315分支源碼下載路徑:http://maven.springframework.org/snapshot/org/springframework/data/spring-data-redis/1.7.0.DATAREDIS-315-SNAPSHOT/

(1)采用setClusterNodes屬性方式構(gòu)造RedisClusterConfiguration

代碼目錄結(jié)構(gòu)如下所示:

 src
       com.example.bean 
       com.example.repo
       com.example.repo.impl
       resources

A.在resources目錄下增加spring-config.xml配置,配置如下:

   

    

      

      

   

   ....

  

  

     

       

            

            

            

       

    

   



    

  

 

  

      

      

      

  

 

      

      

 

 





    

注:加載lua文件



  

 

在com.example.repo.impl下增加PersonRepoImpl,主要包括屬性private RedisTemplate  redisTemplate(該屬性存在setterXXX方法,對(duì)應(yīng)property屬性);

利用redisTemplate.opsForHash().put()即可完成對(duì)Redis Cluster的操作。

 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new ClassPathResource("resources/spring-config.xml").getPath());

 Repo repo =(Repo)context.getBean("personRepo");

(2)采用RedisClusterConfiguration(PropertySource propertySource)方式構(gòu)造RedisClusterConfiguration

  代碼目錄結(jié)構(gòu)如下所示:

 src
       com.redis.cluster.support.config
            MonitorConfig
       resources
           spring-config.xml
            redis.properties

A.在resources目錄下增加spring-config.xml配置,配置如下:

  

   

  

   

  

   

   

   

B.添加redis.properties文件

spring.redis.cluster.nodes=10.48.193.201:7389,10.48.193.201:7388
spring.redis.cluster.timeout=2000
spring.redis.cluster.max-redirects=8

C.編寫(xiě)初始化JedisConnectionFactory連接工廠的java類(lèi)

  @Configuration

  public class MonitorConfig {

    @Value("${spring.redis.cluster.nodes}")

    private String clusterNodes;

    @Value("${spring.redis.cluster.timeout}")

    private Long timeout;

   @Value("${spring.redis.cluster.max-redirects}")

    private int redirects;

    @Bean

    public RedisClusterConfiguration getClusterConfiguration() {

      Map source = new HashMap();

      source.put("spring.redis.cluster.nodes", clusterNodes);

      source.put("spring.redis.cluster.timeout", timeout);

      source.put("spring.redis.cluster.max-redirects", redirects);

      return new RedisClusterConfiguration(new MapPropertySource("RedisClusterConfiguration", source));

     }

    @Bean

    public JedisConnectionFactory getConnectionFactory() {

      return new JedisConnectionFactory(getClusterConfiguration());

     }

   @Bean

    public JedisClusterConnection getJedisClusterConnection() {

      return (JedisClusterConnection) getConnectionFactory().getConnection();

     }

    @Bean

    public RedisTemplate getRedisTemplate() {

      RedisTemplate clusterTemplate = new RedisTemplate();

      clusterTemplate.setConnectionFactory(getConnectionFactory());

      clusterTemplate.setKeySerializer(new DefaultKeySerializer());

      clusterTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());

      return clusterTemplate;

     }

    }

D.通過(guò)注解方式使用JedisClusterConnection和RedisTemplate

@Autowired

    JedisClusterConnection clusterConnection;

   @Autowired

   RedisTemplate redisTemplate;

三、簡(jiǎn)單集成Spring

自己編寫(xiě)jedisCluster的工廠類(lèi)JedisClusterFactory,然后通過(guò)Spring注入的方式獲取jedisCluster,實(shí)現(xiàn)客戶端使用Redis3.0版本的集群特性。

請(qǐng)參考:https://www.jb51.net/article/128895.htm

使用時(shí),直接通過(guò)注解或者XML注入即可,如下所示:

   @Autowired
   JedisCluster jedisCluster;

  或者

  

    

  
 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new ClassPathResource("resources/spring-config.xml").getPath());

 TestRedis testRedis=(TestRedis)context.getBean("testRedis");

四、Redis Cluster調(diào)試中常見(jiàn)錯(cuò)誤

(1)當(dāng)客戶端與集群服務(wù)器不在同一臺(tái)服務(wù)器上時(shí),有如下錯(cuò)誤Could not get a resource from the Cluster

一般當(dāng)客戶端與集群服務(wù)器在同一臺(tái)服務(wù)器上時(shí),操作Redis Cluster正常; 當(dāng)二者不在同一臺(tái)服務(wù)器上時(shí)報(bào)如上錯(cuò)誤,可能是clusterTimeOut時(shí)間設(shè)置過(guò)??;

(2)操作Redis時(shí)報(bào)Too many cluster redirections

初始化JedisCluster時(shí),設(shè)定JedisCluster的maxRedirections.

JedisCluster(Set jedisClusterNode, int timeout, int maxRedirections) ;
JedisCluster jc = new JedisCluster(jedisClusterNodes,5000,1000);

(3)Redis Cluster數(shù)據(jù)寫(xiě)入慢

檢查在通過(guò)./redis-trib命令建立集群時(shí),如果是通過(guò)127.0.0.1的方式建立的集群,那么在往Redis Cluster中寫(xiě)入數(shù)據(jù)時(shí)寫(xiě)入速度比較慢??梢酝ㄟ^(guò)配置真實(shí)的IP來(lái)規(guī)避此問(wèn)題。

看完了這篇文章,相信你對(duì)“Spring-data-redis如何操作redis cluster”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


網(wǎng)頁(yè)標(biāo)題:Spring-data-redis如何操作rediscluster
URL分享:http://fisionsoft.com.cn/article/iggcoo.html