无法从redis cli中查看字节格式的值



我的要求是,在redisdb中,键应存储为字符串,值应存储为字节数组。我能够在java中使用生菜的RedisCodec实现同样的功能。但当我通过reds-cli查看值时,它似乎是原始字符串本身,而不是字节格式。以下是我正在尝试使用的简单代码。

RedisURI redisURI = RedisURI.builder().withHost("localhost")
.withPort(6379)
.build();
RedisClient redisClient = RedisClient.create(redisURI);
RedisCommands<String, byte[]> redisCommands = redisClient.connect(RedisCodec.of(new StringCodec(), new ByteArrayCodec())).sync();
redisCommands.set("key", "value".getBytes(StandardCharsets.UTF_8));
System.out.println(redisCommands.get("key"));

控制台O/p:[B@3bd7f8dc

redis cli o/p:

127.0.0.1:6379>获取密钥

"值";

我用生菜做redis客户。我无法理解为什么我从redis-cli获得的值是字符串本身而不是字节格式。

感谢您的帮助。提前谢谢。

我相信下面的答案可以帮助您理解从redis-cli读取字节值。

如何在Redis控制台中读取Redis二进制值

这里还有关于redis-cli的详细说明。我希望这是有道理的。https://redis.io/docs/manual/cli/

RedisCodec的第二个参数是如何将值数据传输到Redis Server,在您的情况下是通过ByteArrayCodec,一旦使用get检索到值数据,就会将其序列化回原始形式。

我用来从redis读取字节数组的东西是这样的:

byte[] value = redisSyncConnection.get("key");
try (ByteArrayInputStream bis = new ByteArrayInputStream(value);
ObjectInputStream ois = new ObjectInputStream(bis)) {
String valueString = (String) ois.readObject();
System.out.println(valueString);
}

最新更新