1Redis客户端应用(jedis)、jedis分片
1.1什么是jedis?
jedis是针对Java提供的用来连接Redis服务器的客户端技术,就相当于连接数据库需要jdbc一样。(连接mysql需要使用jdbc、连接Redis需要使用Jedis)
1.2Jedis客户端连接redis缓存步骤
1.2.1第一种创建项目方式:
一)下载Jedis的Jar包:官网 www.redis.io 基于maven下最简单的配置方式,来获取redis依赖jar包。
官网提供方式如下:
1)配置maven的pom.xml中配置:根据配置找到依赖的jar包
redis.clients
jedis
2.6.2
jar
compile
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 JedisPool(config,"192.168.13.129",6379);
4)通过池对象获取jedis对象,并操作redisJedis 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.3Jedis分片
1.3.1什么是分片:
当一台redis服务器无法承载高并发的压力,我们就需要多台服务器来分担相应的压力。
图1.
图2.
1.3.2jedis分片操作
第一步:配置多台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 shards = new ArrayList(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;
publicstaticvoidmain(String[] args) {
for(inti=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.4Jedis客户端无法连接redis服务器
l检查redis服务端ip地址和端口号是否正确;
l检查redis服务端是否设置客户端访问密码:jedis.auth("123456");
l检查inux防火墙是否关闭
lLinux关闭防火墙命令步骤:
永久性生效,重启后不会复原
¨开启:chkconfig iptables on
¨关闭:chkconfig iptables off
即时生效,重启后复原
¨开启:service iptables start
¨关闭:service iptables stop
原文:http://liuzedong.blog.51cto.com/8906170/1663720