[REDIS] 레디 스, 키 되세요 \ XAC \ 고정 된 \ x00부터 \ x05t \ x00부터 \ X06 봄 부팅 캐싱
REDIS레디 스, 키 되세요 \ XAC \ 고정 된 \ x00부터 \ x05t \ x00부터 \ X06 봄 부팅 캐싱
나는 매니저 캐시에 봄 캐시 @Cacheable를 사용하고 싶습니다. 그리고 실제 캐시 레디 스입니다.
그런 내 코드 :
@PostMapping("/post")
@CachePut(value = "abc", key = "#key")
public String putInRedis(@RequestParam String key, @RequestParam String value) {
saveInDB(key, value);
return value;
}
@GetMapping("/get")
@Cacheable(value = "abc", key = "#key")
public String queryRedis(@RequestParam String key) {
return findByKey(key);
}
I는 POST 요청을 한 후
레디 스 서버는 이상한 키를 표시
127.0.0.1:6379> keys *
1) "abc:\xac\xed\x00\x05t\x00\x03key"
127.0.0.1:6379> GET "abc:\xac\xed\x00\x05t\x00\x03key"
"\xac\xed\x00\x05t\x00\x05value"
봄 캐싱
이상한-레디 스 - 키 -와 - 스프링 데이터 jedis
StringRedisTemplate 기본처럼 캐시 가능의 시리얼 @ 설정하는 방법 :
public StringRedisTemplate() {
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
setKeySerializer(stringSerializer);
setValueSerializer(stringSerializer);
setHashKeySerializer(stringSerializer);
setHashValueSerializer(stringSerializer);
}
내 application.properties :
spring.redis.host=localhost
spring.redis.password=
spring.redis.port=6379
build.gradle
group 'io.freezhan'
version '1.0-SNAPSHOT'
buildscript {
repositories {
maven {
url 'https://plugins.gradle.org/m2/'
}
}
dependencies {
classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.4.0.RELEASE'
}
}
task wrapper(type: Wrapper) {
gradleVersion = '2.13'
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
}
apply plugin: 'java'
apply plugin: 'spring-boot'
sourceCompatibility = 1.5
repositories {
mavenCentral()
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web") {
exclude module: "spring-boot-starter-tomcat"
}
compile("org.springframework.boot:spring-boot-starter-data-redis")
compile("org.springframework.boot:spring-boot-starter-jetty")
compile("org.springframework.boot:spring-boot-starter-actuator")
compile 'org.projectlombok:lombok:1.16.10'
testCompile("junit:junit")
}
해결법
-
==============================
1.캐싱 - 구현 - 봄의 기능은 다른 캐시를 사용할 수 있습니다. 그 중 하나는 레디 스입니다. 그것은 클래스 RedisCacheManager 사용할 수 있습니다. 봄 문서는 말합니다 :
캐싱 - 구현 - 봄의 기능은 다른 캐시를 사용할 수 있습니다. 그 중 하나는 레디 스입니다. 그것은 클래스 RedisCacheManager 사용할 수 있습니다. 봄 문서는 말합니다 :
캐싱 - -이 내가 레디 스에 영향을 제안하는 방법입니다 통합 :
나는 programmmatic 구성을 사용하여 인터넷에 대한 예를 발견했다. XML 기반 구성을 사용하는 예제도 있습니다.
-
==============================
2.레디 스 템플릿 만들기
레디 스 템플릿 만들기
private RedisTemplate<String, ?> createRedisTemplateForEntity() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>(); redisTemplate.setConnectionFactory(getRedisConnectionFactory()); redisTemplate.setHashValueSerializer(new StringRedisSerializer()); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new StringRedisSerializer()); redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.afterPropertiesSet(); return redisTemplate; }
왜 키와 이상한 문자열을 만들고있다?
키는 인수가 캐시로 주석이 당신의 방법에 존재하는 속성을 기반으로 생성됩니다. 이 봄 레디 스에서 캐시 값을 읽는 방법이다.
-
==============================
3.mm759의 대답과 같은 :
mm759의 대답과 같은 :
이 코드는 내 문제를 해결할 것입니다 :
package io; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.CacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; /** * Created by freezhan on 16/9/5. */ @Configuration public class CacheConfig { @Autowired private StringRedisTemplate redisTemplate; @Bean public CacheManager cacheManager() { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); return cacheManager; } }
그리고 레디 스는 다음과 같이 저장합니다 :
from https://stackoverflow.com/questions/39324717/spring-boot-caching-with-redis-key-have-xac-xed-x00-x05t-x00-x06 by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] jedis와 연결 레디 스 클러스터 (0) | 2020.01.19 |
---|---|
[REDIS] 봄의 데이터 레디 스 HGETALL 작업 (0) | 2020.01.19 |
[REDIS] 봄 4 일반적인 RedisTemplate을 건조 (0) | 2020.01.19 |
[REDIS] 레디 스 연결 / 버퍼 크기 제한을 초과 (0) | 2020.01.19 |
[REDIS] NODE에서 레디 스 SCAN을 사용하여 (0) | 2020.01.19 |