Redis分片链接池与普通链接池使用

1.普通链接池java

    对稳定性、数据量要求不大小型应用能够使用它,链接池只能配置一个redis服务redis

/**
	 * 测试普通链接池使用方式
	 */
	@Test
	public void test2() {
		//1.实例化Jedis连池配置对象
		JedisPoolConfig config = new JedisPoolConfig();
		config.setMaxTotal(10);
		config.setMaxWaitMillis(30);
		//2.实例化链接池
		JedisPool pool = new JedisPool(config,"192.168.245.112", 6381);
		//3.拿到链接
		Jedis redis = pool.getResource();
		//4.使用链接
		redis.set("user_name", "Messi");
	}

2.分片链接池算法

    先说说分片的概念:在分布式系统中,根据输入定位数据存放服务器的计算过程,其中计算用到算法很是重要,会极大的影响存储、后期维护、数据迁移等数据库

    分片链接池和普通链接池适用场景恰好相反,高可用、高并发的大型应用须要使用分片链接池,能够配置整个redis集群的服务器,链接池根据哈希一致性算法,将数据存放到不一样的Redis内存数据库中服务器

/**
	 * 测试分片链接池的使用方式
	 */
	@Test
	public void test1() {
		//1.实例化Jedis分片对象,并放入到一个List当中
		List<JedisShardInfo> list = new ArrayList<>();
		list.add(new JedisShardInfo("192.168.245.111", 6381));
		list.add(new JedisShardInfo("192.168.245.111", 6382));
		list.add(new JedisShardInfo("192.168.245.111", 6383));
		
		//2.实例化Jedis连池配置对象
		JedisPoolConfig config = new JedisPoolConfig();
		config.setMaxTotal(10);
		config.setMaxWaitMillis(30);
		
		//3.实例化Jedis链接池
		ShardedJedisPool pool = new ShardedJedisPool(config, list);
		
		//4.拿到一个链接
		ShardedJedis redis = pool.getResource();
		//5.添加数据
		for(int i=0;i<1000;i++) {
			redis.set("item_"+i, Double.toString(Math.random()));
		}
		//6.获取数据
		for(int i=0;i<10;i++) {//获取数据意思一下就行,不须要所有取出来看一遍
			System.out.println(redis.get("item_"+i));
		}
	}

 

若是对Redis还有更高要求的,能够看看哈希一致性、哈希取余、自定义轮询分片的比较并发

以上两种方式都不是如今企业所采用的,如今已经都使用Redis集群了,集群的内部数据存储方式为哈希槽,其使用方式能够参考Redis集群搭建与使用方法dom

相关文章
相关标签/搜索