All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.support.redis.PrefixStringKeySerializer Maven / Gradle / Ivy


package org.support.redis;

import io.micrometer.core.lang.Nullable;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

public class PrefixStringKeySerializer extends StringRedisSerializer {
    private Charset charset = StandardCharsets.UTF_8;
    private RedisSupportProperty property;
    
    public PrefixStringKeySerializer(RedisSupportProperty property) {
    	super();
    	this.property = property;
    }
    
    @Override
    public String deserialize(@Nullable byte[] bytes) {
    	String saveKey = new String(bytes, charset);
    	if (property.getPrefix().getEnable() != null && property.getPrefix().getEnable()) {
    		String prefixKey = spliceKey(property.getPrefix().getKey());
    		int indexOf = saveKey.indexOf(prefixKey);
    		if (indexOf > 0) {
    			saveKey = saveKey.substring(indexOf);
    		}
    	}
    	return (saveKey.getBytes() == null ? null : saveKey);
    }
    
    @Override
    public byte[] serialize(@Nullable String key) {
    	if (property.getPrefix().getEnable() != null && property.getPrefix().getEnable()) {
    		key = spliceKey(property.getPrefix().getKey()) + key;
    	}
    	return (key == null ? null : key.getBytes(charset));
    }

	private String spliceKey(String prefixKey) {
    	if (StringUtils.isNotBlank(prefixKey) && !prefixKey.endsWith(":")) {
    		prefixKey = prefixKey + "::";
    	}
    	return prefixKey;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy