Redis入门很简单之七【使用Jedis实现客户端Sharding】

Redis入门很简单之七【使用Jedis实现客户端Sharding】

    • 原文地址:http://hello-nick-xu.iteye.com/blog/2078153
    <一>. 背景介绍:

 1. sharding机制:即通常所说的“分片”,允许数据存放在不同的物理机器上,  以适应数据量过大的场景,克服单台机器内存或者磁盘空间的限制。而这种“离散式”地存放,对客户端来说是透明的,对客户端来讲,完全看不到这种差别。
 2. 常见的内存缓存中间件,比如Memcached支持服务器端Sharding,客户端根本无须关心具体的实现细节。而Redis并不支持服务器端分片,不过我们可以使用Jedis提供的API来实现客户端的分片,通过“一致性hash”算法,使得数据离散地存放在不同的服务器上面。
 3. 对客户端来说,这是透明的,数据具体存在在那一台机器上面,对客户端来讲是无差别的。然后,通过不同机器上面的Redis控制台,我们还是可以看出数据的存储情况。
 4. 优缺点:使用Sharding机制,克服了单台服务器的“内存限制”,但是不可避免的降低了数据的存储和访问效率。

 

<二>. 进行配置:
 1. 增加节点:去掉之前的主从配置,作为用作Sharding的一台服务器,增加属性设置

Shell代码   收藏代码
  1. redis.host2=192.168.142.34  

  2. 连接池配置:使用shardedJedisPool

Xml代码   收藏代码
  1. <bean id = "shardedJedisPool" class = "redis.clients.jedis.ShardedJedisPool">  
  2.     <constructor-arg index="0" ref="jedisPoolConfig"/>  
  3.     <constructor-arg index="1">  
  4.         <list>  
  5.             <bean class="redis.clients.jedis.JedisShardInfo">  
  6.                 <constructor-arg index="0" value="${redis.host}"/>         
  7.                 <constructor-arg index="1" value="${redis.port}" type="int"/>  
  8.                 <constructor-arg index="2" value="${redis.timeout}" type="int"/>  
  9.                 <property name="password" value="${redis.password}"/>  
  10.             </bean>  
  11.             <bean class="redis.clients.jedis.JedisShardInfo">  
  12.                 <constructor-arg index="0" value="${redis.host2}"/>         
  13.                 <constructor-arg index="1" value="${redis.port}" type="int"/>  
  14.                 <constructor-arg index="2" value="${redis.timeout}" type="int"/>  
  15.                 <property name="password" value="${redis.password}"/>  
  16.             </bean>  
  17.         </list>             
  18.     </constructor-arg>  
  19. </bean>  

 <三>. 使用API编程:
  1. 获取shardedJedis:

Java代码   收藏代码
  1. ShardedJedisPool shardedPool = (ShardedJedisPool)context.getBean("shardedJedisPool");  
  2. ShardedJedis shardedJedis = shardedPool.getResource();  
  3.  ...  
  4. shardedPool.returnResource(shardedJedis);   

  2. 存储/访问/删除数据:

Java代码   收藏代码
  1. shardedJedis.set("president""Obama");  
  2. String president = shardedJedis.get("president");  
  3. shardedJedis.del("president");  

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值