1、下载Windows环境redis安装:
2、下载jar包:
commons-pool2-2.4.2.jar
jedis-2.9.0.jar
3、项目结构:
4、代码说明:
package com.test.redis; import java.util.ArrayList; import java.util.List; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisShardInfo; import redis.clients.jedis.ShardedJedis; import redis.clients.jedis.ShardedJedisPool; public class RedisUtil { private static Jedis jedis;//非切片额客户端连接 private static JedisPool jedisPool;//非切片连接池 private static ShardedJedis shardedJedis;//切片额客户端连接 private static ShardedJedisPool shardedJedisPool;//切片连接池 //非切片池Jedis配置静态代码块 static { JedisPoolConfig config = new JedisPoolConfig(); //config.setMaxActive(10);在commons-pool2-2.4.2.jar不适用,改为了setMaxTotal //设置池在给定时间段内可以分配的对象数量(逐出客户端或空闲等待逐出),即:最大连接数,负数标识没有限制 config.setMaxTotal(10); //最大空闲数 config.setMaxIdle(5); //获取连接最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted)超时则抛出异常, 小于零:阻塞未知时间, 默认-1 config.setMaxWaitMillis(1000l); //检查连接是否有效 config.setTestOnBorrow(false); //是否启用后进先出, 默认true config.setLifo(true); //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true config.setBlockWhenExhausted(true); //对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断 (默认逐出策略) config.setSoftMinEvictableIdleTimeMillis(1800000); //设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数) config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy"); //每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3 config.setNumTestsPerEvictionRun(3); //逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1 config.setTimeBetweenEvictionRunsMillis(-1); jedisPool = new JedisPool(config, "127.0.0.1", 6379); } static { // 池基本配置 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(20); config.setMaxIdle(5); config.setMaxWaitMillis(1000l); config.setTestOnBorrow(false); // slave链接 List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>(); shards.add(new JedisShardInfo("127.0.0.1", 6379, "master")); // 构造池 shardedJedisPool = new ShardedJedisPool(config, shards); } public static Jedis getJedis() { jedis = jedisPool.getResource(); return jedis; } public static ShardedJedis getShardedJedis() { shardedJedis = shardedJedisPool.getResource(); return shardedJedis; } }