xacxedx 00x 05 tx 00x 02 SpringBootでredisを操作すると、keyが前の文字列より多くなっていることがわかります

1403 ワード

SpringBootでredisを操作すると、keyはxacxedx 00x 05 tx 00x 02プレフィックスが多くなっていることがわかりました.理由:我々が注入したRedisTemplateはRedisを操作する際にJdkSerializationRedisSerializerを用いてデータをシーケンス化しました
        this.defaultSerializer = new JdkSerializationRedisSerializer(this.classLoader != null ? this.classLoader : this.getClass().getClassLoader());

@Nullable
private RedisSerializer> defaultSerializer;
@Nullable
private ClassLoader classLoader;
@Nullable
private RedisSerializer keySerializer = null;
@Nullable
private RedisSerializer valueSerializer = null;
@Nullable
private RedisSerializer hashKeySerializer = null;
@Nullable
private RedisSerializer hashValueSerializer = null;

上記のコードに示すように、我々のkeyに対してJ d k S e rializationRedisSerializerシーケンス化操作を行ったので、我々のkeyの前にxacxedx 00x 05 tx 00x 02 k 1という文字解決方法が現れた:注入したRedisTemplateをStringRedisTemplate注入に変更すれば完了する
 @Autowired
    private StringRedisTemplate redisTemplate;

原理:StringRedisTemplateはRedisSerializerを採用した.string()メソッド、バイナリデータを文字列に変換
public class StringRedisTemplate extends RedisTemplate {
    public StringRedisTemplate() {
        this.setKeySerializer(RedisSerializer.string());
        this.setValueSerializer(RedisSerializer.string());
        this.setHashKeySerializer(RedisSerializer.string());
        this.setHashValueSerializer(RedisSerializer.string());
    }