
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