Springboot 프로젝트 에서 redis 설정 을 사용 합 니 다.

프로그램 구성:

배치
 1.pom.xml 에 의존 도 추가
pom.xml 파일 은 다음 과 같 습 니 다.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <groupId>com.lyy</groupId>
    <artifactId>redis-test</artifactId>
    <version>0.1-SNAPSHOT</version>
 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <!--        -->
        <!--<relativePath/>-->
    </parent>
 
    <dependencies>
        <!--web      , mvc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
 
        <!--redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
    </dependencies>
</project>
이 가운데 spring-boot-starter-web 에는 springmvc 가 포함 되 어 있다.
2.application.yml 설정
application.yml 파일 은 다음 과 같 습 니 다.

server:
  port: 11011
  servlet:
    context-path: /api/v1
 
spring:
  redis:
    # Redis     (   0)
    database: 0
    # Redis     
    host: 127.0.0.1
    # Redis       
    port: 6379
#     Redis       (    )
#    password: 123456
3.설정 클래스 를 통 해 redis 설정
RedisConfig 클래스 는 다음 과 같 습 니 다:

package com.apollo.config;
 
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
 
/**
 * @author :apollo
 * @since :Created in 2019/2/22
 */
@Configuration
@EnableCaching
public class RedisConfig {
 
    @Autowired
    private ObjectMapper objectMapper;
 
    /**
     *    springSessionDefaultRedisSerializer  ,       SESSION     。
     *    JdkSerializationRedisSerializer,        Serializable  。
     *                SerializationException  ,
     *  SessionRepositoryFilter       ,                 
     */
    @Bean(name = "springSessionDefaultRedisSerializer")
    public GenericJackson2JsonRedisSerializer getGenericJackson2JsonRedisSerializer() {
        return new GenericJackson2JsonRedisSerializer();
    }
 
    /**
     * JacksonJsonRedisSerializer GenericJackson2JsonRedisSerializer   :
     * GenericJackson2JsonRedisSerializer json   @class  ,       ,      。
     * JacksonJsonRedisSerializer     List         ,
     *      TypeReference    java.util.LinkedHashMap cannot be cast。
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(connectionFactory);
 
        //   Jackson2JsonRedisSerialize        
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer =
                            new Jackson2JsonRedisSerializer(Object.class);
 
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        //   value        key      
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setKeySerializer(new StringRedisSerializer());
 
        redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
 
        redisTemplate.setDefaultSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setEnableDefaultSerializer(true);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
}
논리 코드
1.프로그램 입구

package com.apollo;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
/**
 * @author :apollo
 * @since :Created in 2019/2/22
 */
@SpringBootApplication
public class Application  {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
2.실체 류
실체 동물 은 다음 과 같 습 니 다:

package com.apollo.bean;
 
/**
 * @author :apollo
 * @since :Created in 2019/2/22
 */
public class Animal {
    private Integer weight;
    private Integer height;
    private String name;
 
    public Animal(Integer weight, Integer height, String name) {
        this.weight = weight;
        this.height = height;
        this.name = name;
    }
 
    ……   get、set  
}
3.공통 반환 클래스

package com.apollo.common;
 
/**
 * @author :apollo
 * @since :Created in 2019/2/22
 */
public class ApiResult {
    public static final Integer STATUS_SUCCESS = 0;
    public static final Integer STATUS_FAILURE = -1;
 
    public static final String DESC_SUCCESS = "    ";
    public static final String DESC_FAILURE = "    ";
 
    private Integer status;
    private String desc;
    private Object result;
 
    private ApiResult() {}
 
    private ApiResult(Integer status, String desc, Object result) {
        this.status = status;
        this.desc = desc;
        this.result = result;
    }
 
    //     Builder         ,      
    public static ApiResult success(Object result) {
        return success(DESC_SUCCESS, result);
    }
 
    //  
    public static ApiResult success(String desc, Object result) {
        return new ApiResult(STATUS_SUCCESS, desc, result);
    }
 
    //  
    public static ApiResult failure(Integer status) {
        return failure(status, null);
    }
 
    //  
    public static ApiResult failure(Integer status, String desc) {
        return failure(status, desc, null);
    }
 
    //  
    public static ApiResult failure(Integer status, String desc, Object result) {
        return new ApiResult(status, desc, result);
    }
 
    public static Builder builder() {
        return new Builder();
    }
 
    //     ,    Builder    
    public static class Builder {
        private Integer status;
        private String desc;
        private Object result;
 
        public Builder status(Integer status) {
            this.status = status;
            return this;
        }
 
        public Builder desc(String desc) {
            this.desc = desc;
            return this;
        }
 
        public Builder result(Object result) {
            this.result = result;
            return this;
        }
 
        public ApiResult build() {
            return new ApiResult(status, desc, result);
        }
    }
 
    ……   get、set  ,          ,             
}
4.처리 요청 컨트롤 러
RedisController 클래스 는 다음 과 같 습 니 다.

package com.apollo.controller;
 
import com.apollo.bean.Animal;
import com.apollo.common.ApiResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
 
import java.util.HashMap;
import java.util.Map;
 
/**
 * @author :apollo
 * @since :Created in 2019/2/22
 */
@RestController
@RequestMapping(value = "/redis")
public class RedisController {
 
    @Autowired
    private RedisTemplate<String, Object> redisTemplate;
 
    /**
     *    redis     
     * @param id
     * @return
     */
    @GetMapping(value = "/{id}")
    public ApiResult addData2Redis(@PathVariable("id") Integer id) {
 
        redisTemplate.opsForValue().set("first", id);
        redisTemplate.opsForValue().set("second", "hello world");
        redisTemplate.opsForValue().set("third",
                new Animal(100, 200, "   "));
 
        return ApiResult.builder()
                        .status(ApiResult.STATUS_SUCCESS)
                        .desc("    ")
                        .build();
    }
 
    /**
     *    redis     
     * @return
     */
    @GetMapping("/redis-data")
    public ApiResult getRedisData() {
        Map<String, Object> result = new HashMap<>();
        result.put("first", redisTemplate.opsForValue().get("first"));
        result.put("second", redisTemplate.opsForValue().get("second"));
        result.put("third", redisTemplate.opsForValue().get("third"));
 
        return ApiResult.builder()
                .status(ApiResult.STATUS_SUCCESS)
                .desc("    ")
                .result(result)
                .build();
    }
}
메모:ApiResult 대상 을 되 돌려 주 는 것 입 니 다.되 돌아 오 는 대상 을 정렬 해 야 하기 때문에 ApiResult 의 get/set 방법 은 필수 입 니 다.그렇지 않 으 면 오류 가 발생 합 니 다.HttpMessage NotWritable Exception:No converter found for return value of type:class com.apollo.common.api Result,ApiResult 형식의 변환 기 를 찾 을 수 없습니다.
테스트
1.테스트 추가
postman 요청 사용 하기http://localhost:11011/api/v1/redis/5,결 과 를 되 돌려 줍 니 다:

{
    "status": 0,
    "desc": "    ",
    "result": null
}

redis 에 로그 인하 여 명령 dbsize 로 저 장 된 데 이 터 를 봅 니 다:

데 이 터 량 은 3 으로 우리 위의 프로그램의 3 단계 작업 에 대응 합 니 다.
2.테스트 획득
postman 요청 사용 하기http://localhost:11011/api/v1/redis/redis-data,결 과 를 되 돌려 줍 니 다:

{
    "status": 0,
    "desc": "    ",
    "result": {
        "third": {
            "weight": 100,
            "height": 200,
            "name": "   "
        },
        "first": 5,
        "second": "hello world"
    }
}

우리 가 이전에 저장 한 데이터 와 비교 하면 정확 하 다.
코드 주소
github 주소:https://github.com/myturn0/redis-test.git
Springboot 프로젝트 에서 redis 를 사용 하 는 설정 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 Springboot redis 설정 내용 은 이전 글 을 검색 하거나 아래 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기