Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to store a byte array to StackExchange.Redis?

I want to use the MessagePack, ZeroFormatter or protobuf-net to serialize/deserialize a generic list and store it in Redis using the stackexchange.redis client.

Now I'm storing a JSON string with the StringSetAsync() method. But I can't find any documentation on how to store a byte[] in Redis.

like image 395
Tadej Avatar asked Jun 06 '18 08:06

Tadej


1 Answers

StackExchange.Redis uses RedisValue to represent different types of values stored in Redis and so it provides implicit conversion operators (for byte[] among others). Please read StackExchange.Redis / Basic Usage / Values carefully as in the third sentence of that chapter you can find

However, in addition to text and binary contents, ...

which basically means that you can use IDatabase.StringSet() to store a basic value (which Redis generally thinks of as a "string" as there are other types like sets, hashes, and so on) - be it string or an array of bytes.

        using (var multiplexer = ConnectionMultiplexer.Connect("localhost:6379"))
        {
            byte[] byteArray = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06 };
            var db = multiplexer.GetDatabase();
            db.StringSet("bytearray", byteArray);
        }
like image 72
Tomasz Poradowski Avatar answered Nov 13 '22 23:11

Tomasz Poradowski