码迷,mamicode.com
首页 > 其他好文 > 详细

Redis 2.8 客户端应用(jedis),jedis分片

时间:2015-06-20 01:39:50      阅读:858      评论:0      收藏:0      [点我收藏+]

标签:redis 2.8在java中的部分操作

1  Redis客户端应用(jedis)、jedis分片

1.1   什么是jedis

jedis是针对Java提供的用来连接Redis服务器的客户端技术,就相当于连接数据库需要jdbc一样。(连接mysql需要使用jdbc、连接Redis需要使用Jedis

1.2   Jedis客户端连接redis缓存步骤

1.2.1  第一种创建项目方式:

一)下载JedisJar包:官网 www.redis.io 基于maven下最简单的配置方式,来获取redis依赖jar包。

官网提供方式如下:

1)配置mavenpom.xml中配置:根据配置找到依赖的jar

<dependencies>

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.6.2</version>

<type>jar</type>

<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

技术分享

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.

技术分享

2.

技术分享

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


Redis 2.8 客户端应用(jedis),jedis分片

标签:redis 2.8在java中的部分操作

原文地址:http://liuzedong.blog.51cto.com/8906170/1663720

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!