NoSQLRedis入门很粗略的七【使用Jedis实现客户端Sharding】

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

博客分类:

redisjedisspringsharding分片

<一>. 背景介绍:
 1.
sharding机制:即一般所说的“分片”,允许数据存放于不同之情理机械上,  以适应数据量过相当的场地,制服单台机器内存如故磁盘空间的范围。而这种“离散式”地存放,对客户端的话是晶莹底,对客户端来讲,完全看不到这种区别。
 2.
周边的内存缓存中件,比如Memcached补助服务器端Sharding,客户端根本不用关心具体的兑现细节。而Redis并无匡助服务器端分片,但是我们可下Jedis提供的API来实现客户端的分片,通过“一致性hash”算法,使得数据离散地存于不同之服务器上边。
 3.
对客户端的话,这是透明的,数据具体在在这无异华机械下面,对客户端来讲是随便区别之。然后,通过不同机器下边的Redis控制台,我们依然得看到数据的囤情形。
 4.
优缺点:使用Sharding机制,克制了单台服务器的“内存限制”,不过不可避免的落了多少的储存和访问效用。

 

<二>. 举办布局:
 1.
加节点:去丢在此以前的中央配置,作为用作Sharding的同样宝服务器,扩张性能设置

Shell代码  NoSQL 1

  1. redis.host2=192.168.142.34  

  2. 连接池配置:使用shardedJedisPool

Xml代码  NoSQL 2

  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代码  NoSQL 3

  1. ShardedJedisPool shardedPool = (ShardedJedisPool)context.getBean(“shardedJedisPool”);  
  2. ShardedJedis shardedJedis = shardedPool.getResource();  
  3.  …  
  4. shardedPool.returnResource(shardedJedis);   

  2. 囤积/访问/删除数据:

Java代码  NoSQL 4

  1. shardedJedis.set(“president”, “Obama”);  
  2. String president = shardedJedis.get(“president”);  
  3. shardedJedis.del(“president”);  

 

1 

0 

分享到: NoSQL 5 NoSQL 6

Redis入门很简短的八【Spring Data Redis
 | Redis入门很简单的六【Jedis常见操作】

参照知识库

NoSQL 7

Redis知识库4924  关注 | 738  收录

评论

5 楼 di1984HIT 2017-02-02  

jedis应该是祥和判断了~

4 楼 wxx302 2016-02-15  

乃好,有个疑问想请教下。
文中的连接池配置是因此 <constructor-arg index=”1″>  
        <list>  
            <bean class=”redis.clients.jedis.JedisShardInfo”>  
                <constructor-arg index=”0″
value=”${redis.host}”/>         
                <constructor-arg index=”1″ value=”${redis.port}”
type=”int”/>  
                <constructor-arg index=”2″ value=”${redis.timeout}”
type=”int”/>  
                <property name=”password”
value=”${redis.password}”/>  
            </bean>  
            <bean class=”redis.clients.jedis.JedisShardInfo”>  
                <constructor-arg index=”0″
value=”${redis.host2}”/>         
                <constructor-arg index=”1″ value=”${redis.port}”
type=”int”/>  
                <constructor-arg index=”2″ value=”${redis.timeout}”
type=”int”/>  
                <property name=”password”
value=”${redis.password}”/>  
            </bean>  
        </list>             
    </constructor-arg>  
贯彻,那么以脚获取shardedJedis,执行多少缓存时,是怎判得到之是方配置的哪位主机的资源要将数据缓存到哪个主机的为?

3 楼 长滩汀及之辣炒年糕 2015-12-11  

顶赞了,感觉jedis可以盘活多东西啊NoSQL 8 NoSQL 9 NoSQL 10

2 楼 bert82503 2014-08-13  

Memcached服务端不补助Sharding,是客户端做的“一致性hash”分片算法。见《memcached系数剖析–4.
memcached的分布式算法》http://blog.charlee.li/memcached-004/
可扣押一下 Java Memcached 实现源码

1 楼 bert82503 2014-08-13  

Memcached服务端不襄助Sharding,是客户端做的“一致性hash”分片算法。见[url]《memcached系数剖析–4.
memcached的分布式算法》http://blog.charlee.li/memcached-004/\[/url\]
足拘留一下 Java Memcached 实现源码

网站地图xml地图