簡體   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