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(); } }
效果: