繁体   English   中英

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

[英]Unable to view the byte formatted value from redis-cli

我的要求是在 redis db 中,键应存储为字符串,值应存储为字节数组。 我可以使用生菜的 RedisCodec 在 java 中实现相同的目标。 但是当我通过 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 服务器,在您的情况下是通过ByteArrayCodec ,一旦使用get检索到它,它就会序列化回原始形式。

我用来从 redis 读取字节 arrays 是这样的:

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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM