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