一步一步学springboot (九)集成redis

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


效果:





猜你喜欢

转载自blog.csdn.net/u010509052/article/details/70666645