Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 数字编解码器_Java_Redis_Lettuce - Fatal编程技术网

Java 数字编解码器

Java 数字编解码器,java,redis,lettuce,Java,Redis,Lettuce,第一次使用莴苣5作为Redis客户端,我发现简单地创建一个RedisCommands来获取/设置Redis值是相当混乱的 我有点不清楚如何才能做到这一点。据我所知,最简单的方法是使用RedisClient重载,它采用RedisCodec和RedisURI,但似乎我还需要实现编解码器解码/编码方法 因为在Redis中存储数字是一个相当常见的用例,所以我发现这种方法相当臃肿,而且我很惊讶没有针对integer/long的预定义编解码器。有鉴于此,我怀疑可能有一个更简单的选择,我没有遇到过。有其他方法

第一次使用莴苣5作为Redis客户端,我发现简单地创建一个
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());
}
}