1. 程式人生 > >Jedis cluster客戶端使用

Jedis cluster客戶端使用

前言:

由於spring-data-redis不支援,redis叢集的操作。所以更換客戶端,使用Jedis cluster。

正文:

一.序言

     前面搭建了個3個msater-slave 的本地叢集測試,這裡用Java 的客戶端 進行一些簡單測試,看看叢集是否生效。

     redis client 推薦:http://redis.io/clients

     我使用的:https://github.com/xetorthio/jedis

二.測試

    maven:

Java程式碼  收藏程式碼
  1. <dependency>  
  2.     <groupId>redis.clients</groupId>  
  3.     <artifactId>jedis</artifactId>  
  4.     <version>2.8.1</version>  
  5.     <type>jar</type>  
  6.     <scope>compile</scope>  
  7. </dependency>  
Java程式碼  收藏程式碼
  1. @org.junit.Test  
  2. public  void cluster(){  
  3.     String key = "2";  
  4.     // 這東西 可以直接看到key 的分片數,就能知道放哪個 節點
      
  5.     System.out.println(JedisClusterCRC16.getSlot(key));  
  6.     Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();  
  7.     jedisClusterNodes.add(new HostAndPort("127.0.0.1"7000));  
  8.     jedisClusterNodes.add(new HostAndPort("127.0.0.1"7001));  
  9.     jedisClusterNodes.add(new HostAndPort("127.0.0.1"
    7002));  
  10.     // 3個master 節點  
  11.     JedisCluster jc = new JedisCluster(jedisClusterNodes);  
  12.     System.out.println(jc.get(key));  
  13.     jc.setnx(key, "bar");  
  14.     String value = jc.get(key);  
  15.     System.out.println(value);  
  16. }  

   別人的例子,我測試:

Java程式碼  收藏程式碼
  1. Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();  
  2.      jedisClusterNodes.add(new HostAndPort("127.0.0.1"7000));  
  3.      jedisClusterNodes.add(new HostAndPort("127.0.0.1"7001));  
  4.      jedisClusterNodes.add(new HostAndPort("127.0.0.1"7002));  
  5.      JedisCluster jc = new JedisCluster(jedisClusterNodes);  
  6.      for (int i = 1; i <= 10000; i++) {  
  7.          long start = System.currentTimeMillis();  
  8.          jc.set("k:" + i, "v" + i);  
  9.          System.out.print("set " + i +"th value in " + (System.currentTimeMillis() - start) + " ms");  
  10.          start = System.currentTimeMillis();  
  11.          jc.get("k:" + i);  
  12.          System.out.println(", get " + i +"th value in " + (System.currentTimeMillis() - start) + " ms");  
  13.      }  

   由於是本機 固態硬碟,速度 槓桿的。

 三.測試反饋: 

     1.叢集正常,基本操作都OK

     2.如果某個master 掛了,比如7001, 叢集依然可用,會存放到對應的salve 7004 上去。

     3.如果master -slave 都掛了,會導致 整個叢集不可用,異常,因此最好配有M-S 的結構

     4.我預設配置,有rdb 和 aof  持久化,因此master 掛了,重啟,資料可以從salve 上恢復

     5.存放的key 會根據返回的位置,放在不同的slot 上,實現均衡

小結:

      1.這裡僅僅是最基本的配置,和簡單測試

      2.如果配置檔案以及更多命令得參考文件

         2.1 客戶端命令:http://redis.io/topics/clients

         2.2 中文jredis API:http://www.360doc.com/content/15/0328/12/5054188_458684113.shtml  建議看原始碼用例

        2.3 redis.conf 中文(舊):http://www.cppblog.com/HappySky2046/archive/2014/06/18/207323.html

      3.如果前期負載不很大,可以開啟持久化,畢竟叢集 還不熟悉,如果負載高了,而且叢集比較熟悉了,業務也不依賴的情況下,可以關閉,或者 適當調整,調整多看看 原理 和 配置檔案說明 就行了。

相關推薦

Jedis cluster客戶使用

前言: 由於spring-data-redis不支援,redis叢集的操作。所以更換客戶端,使用Jedis cluster。 正文: 一.序言      前面搭建了個3個msater-slave 的本地叢集測試,這裡用Java 的客戶端 進行一些簡單測試,看看叢

一個基於golang的redis cluster 客戶

用法 引入並建立叢集 import "github.com/gitstliu/go-redis-cluster" cluster, err := redis.NewCluster(

Redis入門很簡單之七【使用Jedis實現客戶Sharding】

 1. sharding機制:即通常所說的“分片”,允許資料存放在不同的物理機器上,  以適應資料量過大的場景,克服單臺機器記憶體或者磁碟空間的限制。而這種“離散式”地存放,對客戶端來說是透明的,對客戶端來講,完全看不到這種差別。  2. 常見的記憶體快取中介軟體,比如Memcached支援伺服器端Sha

Redis Cluster集群搭建後,客戶的連接研究(Spring/Jedis)(待實踐)

turn ron 記錄 redis div println 刪除 clu name 說明:無論是否已經搭建好集群,還是使用什麽樣的客戶端去連接,都是必須把全部IP列表集成進去,然後隨機往其中一個IP寫。 這樣做的好處: 1、隨機IP寫入之後,Redis Cluster代

Redis-jedis客戶報Too many Cluster redirections異常

jedis客戶端報Too many Cluster redirections異常?很困擾?不知道是什麼問題?請看以下文章,為你一一解答。 Let's Go! 1.解決方案 暫沒發現比較好的解決方案。 2.環境 Redis 3.x Cluster Jedis 2.

Redis客戶Jedis(Key、String、Set、List、pub/sub、cluster、pool、pipleline)

環境: OS:CentOS7 64位 server版本:Redis 3.2.0 client 版本:Jedis 2.8.0 在Maven中引用jedis的jar: <dependencies> <dependency&

【轉載】java 客戶鏈接不上redis解決方案 (jedis)

主機 rom number table 出現 gin 現在 start http 本文出自:http://blog.csdn.net/lulidaitian/article/details/51946169 出現問題描述: 1.Could not get a resou

Jedis連線redis客戶

1 單點的redis利用jedis客戶端連線   如何連線 1 //1 利用jedis連線物件操作redis 2 @Test 3 public void test01(){ 4 //構造一個具有連線資訊的jedis物件 5 //確定虛擬機器linux系

使用Jedis操作Redis-使用Java語言在客戶操作---set型別

原文地址:http://www.cnblogs.com/lixianyuan-org/p/9509696.html 1 //測試set資料型別 2 /** 3 * 在Redis中,我們可以將Set型別看作為沒有排序的字元集合,和List型別一樣,我們也可以在該型別

redis-5.0 cluster帶認證及客戶連線

      Redis在3.0版正式引入redis-cluster叢集這個特性。Redis叢集是一個提供在多個Redis間節點間共享資料的程式集。Redis叢集是一個分散式(distributed)、容錯(fault-tolerant)的Redis記憶體K/V服務,叢集可以使

redis-5.0 cluster帶騰訊分分彩出售認證及客戶連線

      Redis在3.0版騰訊分分彩出售 dsluntan.com Q:3393756370 VX:17061863513正式引入redis-cluster叢集這個特性。Redis叢集是一個提供在多個Redis間節點間共享資料的程式集。Redis叢集是一個分散式(distr

通過jedis連線redis單機成功,使用redis客戶可以連線叢集,但使用JedisCluster連線redis叢集一直報Could not get a resource from th

原因是這個地方以前我沒註釋redis.conf檔案中的bind 127.0.0.1 然後做叢集時使用的命令是: ./redis-trib.rb create –replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.

Redis 的 java 客戶 jedis

Java 連線 MySql 我們有 mysql-connector ,連線 Redis 我們有 jedis。 一、引入依賴 <dependency> <groupId>redis.clients</groupId> <ar

Redis的java客戶Jedis Client介紹(持續翻譯中)

1. 概覽 This article is an introduction to Jedis, a client library in Java for Redis – the popular in-memory data structure store that can persis

Akka-Cluster(3)- ClusterClient, 叢集客戶

  上篇我們介紹了distributed pub/sub訊息傳遞機制。這是在同一個叢集內的訊息共享機制:釋出者(publisher)和訂閱者(subscriber)都在同一個叢集的節點上,所有節點上的DistributedPubSubMediator通過叢集內部的溝通機制在底層構建了訊息流

Jedis 2.9.1、2.10.0 與 3.0.0 釋出,Redis 的 Java 客戶

   Jedis 2.9.1、2.10.0 與 3.0.0 釋出了,Jedis 是 Redis 的 Java 客戶端,它易於使用,與 Redis 2.8.x 和 3.x.x 完全相容。 2.9.1 與 2.10.0 更新: JedisCluster 掃描 bug 修復&nb

使用jedis客戶連線redis,單機版和叢集版

單機版 1.入門例項 @Test public void testJedis(){ //建立一個jedis物件,需要指定服務的ip和埠號 Jedis jedis=new Jedis("192.168.25.11",

Redis 5.0 Cluster叢集帶認證及客戶連線

Redis在3.0版正式引入redis-cluster叢集這個特性。Redis叢集是一個提供在多個Redis間節點間共享資料的程式集。Redis叢集是一個分散式(distributed)、容錯(fault-tolerant)的Redis記憶體K/V服務,叢集可以使用的功能是普通單機Redis所能使用的功能的一

Redis的Java客戶工具使用(Jedis

安裝 引入Maven依賴 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <versio

Redis 客戶-Jedis

一、編碼實戰     1> 簡單使用 package org.jedisDomo; import redis.clients.jedis.Jedis; public class JedisDemo { public static void main(S