如果将数据保存到一个redis节点中,可能会出现丢数据的风险.所以尽可能分开保存.
特点:
多台redis节点将内存扩大N倍
多台redis共同唯一所有的数据.每个节点中所保存的数据都不一样的.
(1)复制配置文件
redis-server redis-6379.conf [root@localhost shards]# redis-server redis-6380.conf [root@localhost shards]# redis-server redis-6381.conf [root@localhost shards]# ps -ef |grep redis root 9789 1 0 19:41 ? 00:00:00 redis-server *:6379 root 9794 1 0 19:41 ? 00:00:00 redis-server *:6380 root 9798 1 0 19:41 ? 00:00:00 redis-server *:6381 root 9804 7057 0 19:41 pts/2 00:00:00 grep redis
连接池操作
@Test public void test01(){ Listshards = new ArrayList<>(); shards.add(new JedisShardInfo("192.16⑧12⑥166", 6379)); shards.add(new JedisShardInfo("192.16⑧12⑥166", 6380)); shards.add(new JedisShardInfo("192.16⑧12⑥166", 6381)); JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(500); config.setMaxIdle(20);//设定最大空闲链接 //实现链接池的操作 new ShardedJedisPool(config, shards); /*ShardedJedis shardedJedis = new ShardedJedis(shards);*/ ShardedJedis shardedJedis = shardedJedis.set("1807","学习redis分片"); System.out.println("获取数据:"+shardedJedis.get("1807")); //shardedJedis.close(); //将链接直接关闭. pool.returnResource(shardedJedis);//将链接还回池中.
说明:采用均衡性的特点让数据尽可能均匀.如果分配不均则采用虚拟节点争抢数据.最终达到相对平衡.
问题:Hash一致算法中存在的问题,如果计算的结果node节点分布不均匀.则可能会出现数据超过最大内存的现象.
解决:尽可能的让节点均匀分配数据.
说明:当节点数量增加时,数据会重新进行挂载,但是尽可能保证原有的数据不变.
特列:
如果使用分片的过程中,分片的节点突然宕机.会导致映射的内存缺失.直接导致整个分片将不能正常使用.
特点:由于分布式的原因.有些系统不能够看到全部的内存空间.会导致一个key出现多个位置的现象(不好的)
说明:负载是分散性的另一种讨论,可能会出现一个位置有多个key的现象.
以上就是土嘎嘎小编为大家整理的redis分片技术相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!