康猫100天-第九天-redis之shardedJedis学习-20181203

1.  作用:实现分布式缓存

     原理:通过一致性哈希实现,通过一定策略把不同的key分配到不同的redis server上,达到横向拓展目的。

2.  使用方法:不支持多命令操作,不可以和MultiKeyCommands这个类一样,同时操作多个命令。

3.  代码操作:

     3.1  初始化ShardedJedisPool,加入多个Redis服务器信息,还可以加入采用的算法,包括MURMUR_HASH(默认)MD5,还可以传入keyTagPattern。

//设置连接池相关配置
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(2);
poolConfig.setMaxIdle(1);
poolConfig.setMaxWaitMillis(2000);
poolConfig.setTestOnBorrow(false);
poolConfig.setTestOnReturn(false);

//设置Redis信息
String host = "localhost";
JedisShardInfo shardInfo1 = new JedisShardInfo(host, 6379, 500);
JedisShardInfo shardInfo2 = new JedisShardInfo(host, 6380, 500);
JedisShardInfo shardInfo3 = new JedisShardInfo(host, 6381, 500);

//初始化ShardedJedisPool
List<JedisShardInfo> infoList = Arrays.asList(shardInfo1, shardInfo2, shardInfo3);
ShardedJedisPool jedisPool = new ShardedJedisPool(poolConfig,infoList);

     3.2  测试:

jedis = jedisPool.getResource();
jedis.set("cnblog","cnblog");
jedis.set("redis","redis");
jedis.set("test","test");
jedis.set("123456","1234567");

Client client1 = jedis.getShard("cnblog").getClient();
Client client2 = jedis.getShard("redis").getClient();
Client client3 = jedis.getShard("test").getClient();
Client client4 = jedis.getShard("123456").getClient();

System.out.println("--------cnblog in server:"+client1.getHost()+"and port is:"+client1.getPort());
System.out.println("--------redis in server:"+client2.getHost()+"and port is:"+client2.getPort());
System.out.println("--------test in server:"+client3.getHost()+"and port is:"+client3.getPort());
System.out.println("--------123456 in server:"+client4.getHost()+"and port is:"+client4.getPort());

     3.3  查看key的保存位置

            

           

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值