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