springboot集成redis没有采用jedis,也没有使用springboot自带的redis,而是采用spring-data-redis,由于这样spring封装了好多方法使用起来方便配置起来也灵活。
1.在pom.xml中添加,推荐使用redis高版本
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.8.0.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2.在resources目录里新建redis.properties文件,当然也不可以不建,把属性写到application.properties,但是这样不方便维护
这些属性可以自己扩展
redis.host=127.0.0.1
redis.port=6379
redis.pass=123456
redis.database=0
redis.maxTotal=3000
redis.maxIdle=300
redis.maxActive=600
redis.maxWait=1000
redis.testOnBorrow=true
3.建一个类获取这些属性
@Configuration
@ConfigurationProperties
@PropertySource("classpath:redis.properties")
@Component
public class RedisProp {
@Value("${redis.host}")
private String host;
@Value("${redis.port}")
private int port;
@Value("${redis.pass}")
private String pass;
@Value("${redis.database}")
private int database;
@Value("${redis.maxTotal}")
private int maxTotal;
@Value("${redis.maxIdle}")
private int maxIdle;
@Value("${redis.maxActive}")
private int maxActive;
@Value("${redis.maxWait}")
private int maxWait;
@Value("${redis.testOnBorrow}")
private boolean testOnBorrow;
setter.getter方法略
4.构建redis实例化类
/**
* @Description: 原来在spring中实例化的bean,
* 这里都要实例化
* @author lifeng
* @date 2017年5月10日 下午10:49:23
* @version V1.0
*/
@Configuration
public class RedisConfiguration {
@Autowired
private RedisProp redisProp;
/**Jedis连接池*/
@Bean(name= "jedisPoolConfig")
public JedisPoolConfig jedisPool() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//设置连接池相关的属性
jedisPoolConfig.setMaxIdle(redisProp.getMaxIdle());
jedisPoolConfig.setMaxTotal(redisProp.getMaxTotal());
return jedisPoolConfig;
}
/**Jedis连接工厂*/
@Bean(name= "jedisConnectionFactory")
public JedisConnectionFactory gedisConnectionFactory(JedisPoolConfig jedisPoolConfig) {
JedisConnectionFactory factory = new JedisConnectionFactory(jedisPoolConfig);
factory.setDatabase(redisProp.getDatabase());
factory.setHostName(redisProp.getHost());
factory.setPort(redisProp.getPort());
return factory;
}
/**redisTemplate*/
@Bean(name= "redisTemplate")
public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory) {
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(jedisConnectionFactory);
//设置键的序列化
redisTemplate.setKeySerializer(new StringRedisSerializer());
//设置值得序列化
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
System.out.println("=========RedisTemplate 实例化成功================");
return redisTemplate;
}
}
5.使用
@RestController
public class UserController {
@Autowired
private UserService userService;
@Autowired
private RedisTemplate redisTemplate;
@RequestMapping("/user/all")
public List<User> findAll(){
redisTemplate.opsForList().leftPushAll("user-test", userService.queryAll());
System.out.println((User)redisTemplate.opsForList().leftPop("user-test"));
return userService.queryAll();
}
}
效果: