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

相關文章
相關標籤/搜索