美文网首页Spring Boot
springboot学习之集成redis

springboot学习之集成redis

作者: _奔波儿灞_ | 来源:发表于2017-09-13 14:43 被阅读1069次

这篇文章主要是要实现在项目中集成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:


Paste_Image.png

因此在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 保存等等..

相关文章

网友评论

    本文标题:springboot学习之集成redis

    本文链接:https://www.haomeiwen.com/subject/lxgksxtx.html