美文网首页
Spring Boot 入门系列(十一) 使用Redis

Spring Boot 入门系列(十一) 使用Redis

作者: 回文体文回 | 来源:发表于2019-08-11 15:26 被阅读0次

    文章使用版本为 Spring Boot 2.1.x

    前言

    Redis 是一个高性能的key-value数据库,与其他 key - value 缓存产品有以下三个特点:

    • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    • Redis支持数据的备份,即master-slave模式的数据备份。

    相信大家平时工作中也会用到Redis,那么怎么在Spring Boot中使用呢?

    配置Redis

    在Spring Boot中使用Redis非常简单,只需要在application.yml中配置Redis数据库的地址就可以了。

    spring:
      redis:
        host: localhost
        port: 6379
        password:
        database: 0
    

    其实看RedisProperties源码你就可以知道,其实只要我们通过maven引入spring-boot-starter-data-redis,Spring Boot就会默认连接上述配置的Redis,如果连不上就会报错。

    通过看RedisAutoConfiguration的源码我们可以看到,Spring Boot自动帮我们配置了2个Bean,RedisTemplate<Object, Object>StringRedisTemplate

        @Configuration
        protected static class RedisConfiguration {
    
            @Bean
            @ConditionalOnMissingBean(name = "redisTemplate")
            public RedisTemplate<Object, Object> redisTemplate(
                    RedisConnectionFactory redisConnectionFactory)
                            throws UnknownHostException {
                RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
                template.setConnectionFactory(redisConnectionFactory);
                return template;
            }
    
            @Bean
            @ConditionalOnMissingBean(StringRedisTemplate.class)
            public StringRedisTemplate stringRedisTemplate(
                    RedisConnectionFactory redisConnectionFactory)
                            throws UnknownHostException {
                StringRedisTemplate template = new StringRedisTemplate();
                template.setConnectionFactory(redisConnectionFactory);
                return template;
            }
    
        }
    

    测试

    package org.schhx.springbootlearn.dao;
    
    import org.junit.Assert;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.schhx.springbootlearn.module.User;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import java.util.UUID;
    import java.util.concurrent.TimeUnit;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class RedisTemplateTest {
    
        @Autowired
        StringRedisTemplate stringRedisTemplate;
    
        @Autowired
        RedisTemplate redisTemplate;
    
        @Test
        public void save() throws Exception {
            String key = UUID.randomUUID().toString();
            String value = UUID.randomUUID().toString();
            stringRedisTemplate.opsForValue().set(key, value);
            stringRedisTemplate.expire(key, 5, TimeUnit.SECONDS);
            Assert.assertEquals(value, stringRedisTemplate.opsForValue().get(key));
            Thread.sleep(5000);
            Assert.assertEquals(null, stringRedisTemplate.opsForValue().get(key));
        }
    
        @Test
        public void saveObject() throws Exception {
            String key = UUID.randomUUID().toString();
            User user = new User().setName("张三").setAge(20);
            redisTemplate.opsForValue().set(key, user);
            redisTemplate.expire(key, 5, TimeUnit.SECONDS);
            Assert.assertEquals(user, redisTemplate.opsForValue().get(key));
            Thread.sleep(5000);
            Assert.assertEquals(null, redisTemplate.opsForValue().get(key));
        }
    
    }
    
    

    后记

    大家有没有发现整个过程非常简单,只要两步就可以了

    1. 通过maven引入spring-boot-starter-data-redis
    2. 在application中配置Redis地址

    然后我们就可以愉快的使用redisTemplate了,当然你也可以在redisTemplate的基础上进一步封装。

    完整示例

    相关文章

      网友评论

          本文标题:Spring Boot 入门系列(十一) 使用Redis

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