StringRedisTemplate 와 RedisTemplate 의 차이
3270 단어 springboot
String RedisTemplate 는 계승 입 니 다. RedisTemplate , RedisTemplate 는 RedisTemplate 로 정의 합 니 다.
String RedisTemplate 는 K,V 를 String 형식의 RedisTemplate 로 한정 한 것 이 아니 라 구조 함수 에 직렬 화 규칙 을 설정 한 것 입 니 다.
,key value 및 hashkey hashValue 의 직렬 화 규칙 은 모두 RedisSerializer.string()입 니 다.
public class StringRedisTemplate extends RedisTemplate {
/**
* Constructs a new StringRedisTemplate
instance. {@link #setConnectionFactory(RedisConnectionFactory)}
* and {@link #afterPropertiesSet()} still need to be called.
*/
public StringRedisTemplate() {
setKeySerializer(RedisSerializer.string());
setValueSerializer(RedisSerializer.string());
setHashKeySerializer(RedisSerializer.string());
setHashValueSerializer(RedisSerializer.string());
}
/**
* Constructs a new StringRedisTemplate
instance ready to be used.
*
* @param connectionFactory connection factory for creating new connections
*/
public StringRedisTemplate(RedisConnectionFactory connectionFactory) {
this();
setConnectionFactory(connectionFactory);
afterPropertiesSet();
}
protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {
return new DefaultStringRedisConnection(connection);
}
}
key,value,hashkey,hashValue 가 모두 String 형식 이 라면 직접 사용 합 니 다. String Redis Template 면 됩 니 다.
RedisTemplate 기본 정렬 은 defaultSerializer = JdkSerializationRedisSerializer
if (enableDefaultSerializer) {
if (keySerializer == null) {
keySerializer = defaultSerializer;
defaultUsed = true;
}
if (valueSerializer == null) {
valueSerializer = defaultSerializer;
defaultUsed = true;
}
if (hashKeySerializer == null) {
hashKeySerializer = defaultSerializer;
defaultUsed = true;
}
if (hashValueSerializer == null) {
hashValueSerializer = defaultSerializer;
defaultUsed = true;
}
}
key,value,hashkey,hashValue 직렬 화 규칙 이 설정 되 어 있 지 않 을 때 기본 값 은 JdkSerialization RedisSerializer 입 니 다.redis-cli 에서 볼 때
키 앞 에 문자 가 더 많아 요. 예 를 들 어 이렇게\xac\xed\x00\x05t\\x00\키 를 사용 하기 때문에
RedisTemplate 의 key 서열 화 규칙 과 StringRedisTemplate 다 르 면 키 를 찾 을 수 없다.
보통 프로젝트 에 서 는 String 유형 을 key 로 하 는데 주로 개발 자가 식별 하기 편리 하고 key 의 직렬 화 는 string 직렬 화 를 사용 합 니 다.
이렇게 명령 행 환경 에서 get 조 회 를 할 때 정 의 된 key 문자열 을 직접 사용 하면 값 을 조회 할 수 있 습 니 다.
value 에 대해 hashValue 의 직렬 화 는 자체 적 으로 가지 고 있 는 JdkSerialization RedisSerializer 또는 자신 이 먼저 json 문자열 로 직렬 화 한 다음 저장 할 수 있 습 니 다.
그러나 이렇게 하면 get 이나 set 에서 상응하는 변환 작업 을 해 야 한다.전에 RedisTemplate 를 사용 하 는 사람 을 만 났 어 요.
redis 그러나 value 의 직렬 화 방식 은 기본 JdkSerializationRedisSerializer 입 니 다.사실 이 경우 StringRedisTemplate 를 사용 합 니 다. 회 경
네.또한 프로젝트 에서 RedisTemplate 는 보통 하나의 예 로 다른 클래스 에 주입 되 며,RedisTemplate 를 정의 할 때 key value 의 직렬 화 방안 을 생각해 야 합 니 다.
이후 직렬 화 방식 을 바 꾸 면 키 가 찾 지 못 하거나 value 변환 에 오류 가 발생 할 수 있 습 니 다.value 가 실체 대상 이 라면 필드 가 수정 되면 redis 에 미 치 는 영향 을 고려 해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin Springboot -- 파트 14 사용 사례 REST로 전환하여 POST로 JSON으로 전환前回 前回 前回 記事 の は は で で で で で で を 使っ 使っ 使っ て て て て て リクエスト を を 受け取り 、 reqeustbody で 、 その リクエスト の ボディ ボディ を を 受け取り 、 関数 内部 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.