这篇文章主要是要实现在项目中集成redis。
redis的安装可以查看我的另一篇文章linux学习之centos7 安装redis
1.引入redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.3.2.RELEASE</version>
</dependency>
我的springboot版本用的是1.5.4.RELEASE
而redis最新是1.4.7.RELEASE:
因此在pom代码中设置了版本号
<version>1.3.2.RELEASE</version>
spring-boot-starter-redis给我们提供了RedisTemplate,方便我们对redis的配置和操作。
2.设置redis配置
在application.properties或者是yaml文件中设置:
# REDIS (RedisProperties)
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=127.0.0.1
# Redis服务器连接端口,生产服务端口要改,如果不改容易被感染 ,同时也最好设置好密码
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=20000
注意
如果设置的密码和redis中设置的不一样会出现权限异常:
NOAUTH Authentication required.; nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required."
我们可以在redis.conf
配置文件中找到requirepass
,这是redis访问密码设置的值。
3.让spring 管理我们的RedisTemplate
创建RedisConfig,代码如下:
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
serializer.setObjectMapper(mapper);
template.setValueSerializer(serializer);
//使用StringRedisSerializer来序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());
template.afterPropertiesSet();
return template;
}
}
4.通过RedisTemplate 来操作我们的redis
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void t(){
ValueOperations valueOperations = redisTemplate.opsForValue();
SimpleLoginInfo simpleLoginInfo = SimpleLoginInfo.builder()
.gender(1).role(2).nickName("xiaohua").build();
//设置超时时间
valueOperations.set("xiaohua",simpleLoginInfo,2, TimeUnit.SECONDS);
//不设置超时
valueOperations.set("xiaoxiao",simpleLoginInfo);
SimpleLoginInfo xiaohua = (SimpleLoginInfo) valueOperations.get("xiaohua");
System.out.println(xiaohua.toString());
try{
Thread.sleep(3000);
SimpleLoginInfo xiaoxiao = (SimpleLoginInfo) valueOperations.get("xiaoxiao");
SimpleLoginInfo xiaohua2 = (SimpleLoginInfo) valueOperations.get("xiaohua");
System.out.println(xiaoxiao.toString());
System.out.println(xiaohua2.toString());
}catch (Exception e){
e.printStackTrace();
}
}
}
这样我们的springboot就可以使用redis了。
总结:
本篇文章主要写了springboot集成redis.而我们可以通过redis做很多事情,比如cache,key-value 保存等等..