Springboot集成Jedis使用

1、增加Jedis的依賴

springboot本身支持的spring-boot-starter-data-redis,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

或者引人第三方依賴(本文采用)

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
</dependency>

2、配置redis信息

   在application.properties配置文件中,增加redis相關配置信息;

#redis
redis.host=192.168.220.1
redis.port=6379
redis.timeout=3
redis.password=123456
redis.poolMaxTotal=10
redis.poolMaxIdle=10
redis.poolMaxWait=3
 
參數名 含義 默認值 使用建議
maxTotal 資源池最大連接數 8  
maxIdle 資源池允許最大空閒連接數 8  
minIdle 資源池確保最少空閒連接數 0  
jmxEnable 是否開啓jmx監控 true 建議開啓
blockWhenExhausted 當資源池用盡後,調用者是否要等待 true 建議使用默認值
maxWaitMillis 當資源連接池用盡後,調用者的最大等待時間(毫秒) -1:永不超時 不建議使用
testOnBorrow 向資源池借用連接時是否做連接有效性檢測(ping),無效連接會被移除 false 建議false
testOnReturn 向資源池歸還連接時是否做連接有效性檢測(ping),無效連接會被移除 false 建議false


3、代碼實現

(1)實例化redis的配置

@Component
@Data
@ConfigurationProperties(prefix="redis")
public class RedisConfig {
	private String host;
	private int port;
	private int timeout;//秒
	private String password;
	private int poolMaxTotal;
	private int poolMaxIdle;
	private int poolMaxWait;//秒

}

(2)JedisPool配置類

@Service
public class RedisPoolFactory {

	@Autowired
	private RedisConfig redisConfig;
	
	@Bean
	public JedisPool JedisPoolFactory() {
		JedisPoolConfig poolConfig = new JedisPoolConfig();
		poolConfig.setMaxIdle(redisConfig.getPoolMaxIdle());
		poolConfig.setMaxTotal(redisConfig.getPoolMaxTotal());
		poolConfig.setMaxWaitMillis(redisConfig.getPoolMaxWait() * 1000);
		JedisPool jp = new JedisPool(poolConfig, redisConfig.getHost(), redisConfig.getPort(),
				redisConfig.getTimeout()*1000, redisConfig.getPassword(), 0);
		return jp;
	}
}

(3)redis功能實現類(部分功能)

@Service
public class RedisService {
	
	@Autowired
	private JedisPool jedisPool;
	
	public <T> T get(String key, Class<T> clazz) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			String str = jedis.get(key);
			T t = stringToBean(str, clazz);
			return t;
		} finally {
			returnToPool(jedis);
		}
	}

	public <T> boolean set(String key, T value) {
		Jedis jedis = null;
		try {
			jedis = jedisPool.getResource();
			String str = beanToString(value);
			if (str == null || str.length() <= 0) {
				return false;
			}
			jedis.set(key, str);
			return true;
		} finally {
			returnToPool(jedis);
		}
	}
	
    private void returnToPool(Jedis jedis) {
		if (jedis != null) {
			jedis.close();
		}
	}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章