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

文章使用版本为 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,RedisTemplateStringRedisTemplate

    @Configuration
    protected static class RedisConfiguration {

        @Bean
        @ConditionalOnMissingBean(name = "redisTemplate")
        public RedisTemplate redisTemplate(
                RedisConnectionFactory redisConnectionFactory)
                        throws UnknownHostException {
            RedisTemplate template = new RedisTemplate();
            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的基础上进一步封装。

完整示例

  • github

你可能感兴趣的:(Spring Boot 入门系列(十一) 使用Redis)