Java 数字编解码器
第一次使用莴苣5作为Redis客户端,我发现简单地创建一个Java 数字编解码器,java,redis,lettuce,Java,Redis,Lettuce,第一次使用莴苣5作为Redis客户端,我发现简单地创建一个RedisCommands来获取/设置Redis值是相当混乱的 我有点不清楚如何才能做到这一点。据我所知,最简单的方法是使用RedisClient重载,它采用RedisCodec和RedisURI,但似乎我还需要实现编解码器解码/编码方法 因为在Redis中存储数字是一个相当常见的用例,所以我发现这种方法相当臃肿,而且我很惊讶没有针对integer/long的预定义编解码器。有鉴于此,我怀疑可能有一个更简单的选择,我没有遇到过。有其他方法
RedisCommands
来获取/设置Redis值是相当混乱的
我有点不清楚如何才能做到这一点。据我所知,最简单的方法是使用RedisClient
重载,它采用RedisCodec
和RedisURI
,但似乎我还需要实现编解码器解码/编码方法
因为在Redis中存储数字是一个相当常见的用例,所以我发现这种方法相当臃肿,而且我很惊讶没有针对integer/long的预定义编解码器。有鉴于此,我怀疑可能有一个更简单的选择,我没有遇到过。有其他方法吗?我也有类似的需求,最后编写了以下编解码器:
导入io.莴苣.core.codec.RedisCodec;
导入java.nio.ByteBuffer;
导入java.nio.CharBuffer;
导入java.nio.charset.StandardCharset;
公共类StringLongRedisCodec实现RedisCodec{
@凌驾
公共字符串解码密钥(最终字节缓冲字节){
返回StandardCharsets.US_ASCII.decode(字节).toString();
}
@凌驾
公共长解码值(最终字节缓冲字节){
final CharBuffer charSequence=StandardCharsets.US_ASCII.decode(字节);
返回Long.parseLong(charSequence,0,charSequence.length(),10);
}
@凌驾
公用ByteBuffer编码键(最终字符串键){
返回StandardCharsets.US_ASCII.encode(键);
}
@凌驾
公共字节缓冲编码值(最终长值){
返回ByteBuffer.wrap(Long.toString(value.getBytes());
}
}