Springboot 프로젝트 에서 redis 설정 을 사용 합 니 다.
12549 단어 Springbootredis배치 하 다.
배치
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 설정 내용 은 이전 글 을 검색 하거나 아래 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.