spring boot现在越来越多的项目在使用,掌握spring boot 整合相关工具的技术,变得越来越重要。这里记录下自己整合redis的一些理解,目前只是单机版,没有用到哨兵模式以及集群。使用的是jedis技术。
首先需要在配置文件中配置数据,如host,port,password,timeout,database等等属性,截图如下
这里需要说明一下,上面的数据库模块,是必须要有的,不然项目无法启动,具体的原因,我也没有搞懂,如果不加上数据库的数据源,会报如下错误:
redis本质上还是一种数据库,所以,我们需要数据库连接,所以,就要数据库连接池。所以,这一步,我们建一个配置类,用于配置jedispool,具体配置类的内容,如下截图:
package com.example.demo.config;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
@Configuration
public class PoolConfig {
private Logger logger = LoggerFactory.getLogger(PoolConfig.class);
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.database}")
private int database;
@Value("${spring.redis.timeout}")
private int timeout;
@Value("${spring.redis.pool.max-active}")
private int maxActive;
@Value("${spring.redis.pool.max-wait}")
private Long maxWait;
@Value("${spring.redis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.pool.min-idle}")
private int minIdle;
@Bean
public JedisPool getPool() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(maxIdle);
poolConfig.setMinIdle(minIdle);
poolConfig.setMaxWaitMillis(maxWait);
poolConfig.setMaxTotal(maxActive);
logger.info("jedisPool配置成功");
logger.info("reids地址"+host+":"+port);
JedisPool pool = new JedisPool(poolConfig, host, port, timeout, null);
return pool;
}
}
此时,启动springboot时,容器当中就有jedispool类了,要做的就是注入到其他需要使用的地方。一般到这时,我们都会配置一个jedis工具类,用来封装获取jedis,实现一些特殊的功能等这些步骤。自己做了一个非常简单的,如下:
package com.example.demo.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
@Component
public class JedisUtils {
@Autowired
private JedisPool pool;
public void set(String key, String value) {
Jedis jedis = pool.getResource();
jedis.set(key, value);
}
public String get(String key) {
Jedis jedis = pool.getResource();
return jedis.get(key);
}
}
这时,就可以用了。。OK,到这步,已经完成了。这只是初版的单机的版本,后续再继续研究集群版本的。。