【问题标题】:How to store a byte array to StackExchange.Redis?如何将字节数组存储到 StackExchange.Redis?
【发布时间】:2018-11-15 20:53:42
【问题描述】:

我想使用MessagePackZeroFormatterprotobuf-net 序列化/反序列化一个通用列表并使用stackexchange.redis 客户端将其存储在Redis 中。

现在我使用StringSetAsync() 方法存储一个JSON 字符串。但我找不到任何关于如何在 Redis 中存储 byte[] 的文档。

【问题讨论】:

    标签: redis protobuf-net stackexchange.redis msgpack zeroformatter


    【解决方案1】:

    StackExchange.Redis 使用RedisValue 来表示存储在 Redis 中的不同类型的值,因此它提供了隐式转换运算符(用于byte[] 等)。请仔细阅读StackExchange.Redis / Basic Usage / Values,您可以找到该章节的第三句

    但是,除了文本和二进制内容,...

    这基本上意味着您可以使用IDatabase.StringSet() 来存储基本值(Redis 通常将其视为“字符串”,因为还有其他类型,如集合、哈希等)——无论是字符串还是数组字节数。

            using (var multiplexer = ConnectionMultiplexer.Connect("localhost:6379"))
            {
                byte[] byteArray = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
                var db = multiplexer.GetDatabase();
                db.StringSet("bytearray", byteArray);
            }
    

    【讨论】:

    • (赞赏地点点头)