Redis 2.8 客戶端應用(jedis),jedis分片

1  Redis 客戶端應用(jedis )、jedis 分片

1.1   什麼是jedis

jedis是針對Java提供的用來鏈接Redis服務器的客戶端技術,就至關於鏈接數據庫須要jdbc同樣。(鏈接mysql須要使用jdbc、鏈接Redis須要使用Jedismysql

1.2   Jedis客戶端鏈接redis緩存步驟

1.2.1  第一種建立項目方式:

一)下載JedisJar包:官網 www.redis.io 基於maven下最簡單的配置方式,來獲取redis依賴jar包。redis

官網提供方式以下:算法

1)配置mavenpom.xml中配置:根據配置找到依賴的jarsql

<dependencies>數據庫

<dependency>緩存

<groupId>redis.clients</groupId>服務器

<artifactId>jedis</artifactId>併發

<version>2.6.2</version>maven

<type>jar</type>ide

<scope>compile</scope>

</dependency>

</dependencies>

 

2)使用Java代碼操做Redis服務器

Jedis jedis = new Jedis("192.168.13.129", 6379);

jedis.set("string_key01","today  is a good day");

String s = jedis.get("string_key01");

System.out.print(s);

jedis.close();

 

 

二)jedis鏈接池應用

1)建立Jedis鏈接池配置對象:JedisPoolConfigconfig = new JedisPoolConfig();

2)設置配置相關參數:

config.setMaxIdle(1000*60);

config.setMaxTotal(8);

config.setTestOnBorrow(ture);

 

3)經過配置對象建立鏈接池對象:

JedisPool pool = new JedisPoolconfig,"192.168.13.129",6379;

 

4)經過池對象獲取jedis對象,並操做redis

Jedis jds = pool.getResource();

jds.set("name","zhangsan");

String name = jds.get("name");

System.out.print(name);

 

1.2.2  第二種建立項目方式:

1)導入依賴的jar

wKiom1WEINuAHOYQAAB9iL7GGrM796.jpg

2)使用Java代碼操做Redis服務器(同上)

Jedis jedis = new Jedis("192.168.13.129",  6379);

jedis.set("string_key01","today  is a good day");

String s = jedis.get("string_key01");

System.out.print(s);

jedis.close();

1.3   Jedis分片

1.3.1  什麼是分片:

當一臺redis服務器沒法承載高併發的壓力,咱們就須要多臺服務器來分擔相應的壓力。

1.

wKioL1WEIrPiJbt9AAEOZThxt4k313.jpg

2.

wKiom1WEITizA28vAAF7daugThk225.jpg

1.3.2   jedis分片操做

 

第一步:配置多臺Redis服務器:由於配置多臺Redis服務器不方便,因此這裏使用複製配置文件,修改端口來模板第二臺Redis服務器;

已經有一臺了,複製redis.conf修改端口號6380做爲第二臺服務器

第二步:建立分片Jedis鏈接池對象:ShardedJedisPool

1)它須要三個參數:1. 配置參數、2. 多臺Redis服務器信息參數、3. 算法參數。

JedisPoolConfig poolConfig = newJedisPoolConfig();

poolConfig.setMaxTotal(500);

poolConfig.setMaxIdle(1000  * 60);

poolConfig.setTestOnBorrow(true);

 

 

List<JedisShardInfo>  shards = new  ArrayList<JedisShardInfo>(2);

JedisShardInfo  A = new JedisShardInfo("192.168.13.111", 6379);

JedisShardInfo  B = new JedisShardInfo("192.168.13.111", 6380);

shards.add(A  );

shards.add(B);

 

 

ShardedJedisPoolpool = new  ShardedJedisPool(poolConfig, shards , Hashing.MURMUR_HASH);

2)獲取jedis對象,模擬100個請求來測試如何分配資源。

 

privatestaticintindex = 1;

 publicstaticvoid main(String[] args) {

    for(int i=0; i<100; i++){

        String key =String.valueOf(index++);

        ShardedJedis jds =null;

          try {

           jds =pool.getResource();

                      System.out.println(key+":"+jds.getShard(key).getClient().getPort());

                        System.out.println(jds.set(key,"1111111111111111111111111111111"));

                }catch (Exception e) {

                   e.printStackTrace();

                }

                finally{

                   pool.returnResource(jds);

                }

             }

        }

 

3)小結:無需關心數據保存到哪臺服務器上,獲取數據也無需指定服務器,全全由Hashing.MURMUR_HASH來負責。

1.4   Jedis客戶端沒法鏈接redis服務器

l  檢查redis服務端ip地址和端口號是否正確;

l  檢查redis服務端是否設置客戶端訪問密碼:jedis.auth("123456");

l  檢查inux防火牆是否關閉

l  Linux關閉防火牆命令步驟:

  永久性生效,重啓後不會復原

¨      開啓:chkconfig iptables on

¨      關閉:chkconfig iptables off

 

  即時生效,重啓後復原

¨      開啓:service iptables start

¨      關閉:service iptables stop

相關文章
相關標籤/搜索