public byte[] Serialize <T>(T instance) { if (instance == null) { throw new ArgumentNullException(nameof(instance)); } var data = instance.SmartSerializeCompress(out bool compressed); var builder = new FlatBufferBuilder(data.Length + 255); // allocate payload var payload = RedisData.CreatePayloadVector(builder, data); var typeId = GetTypeId(instance, builder); RedisData.StartRedisData(builder); RedisData.AddCompressed(builder, compressed); RedisData.AddType(builder, typeId); RedisData.AddPayload(builder, payload); int message = RedisData.EndRedisData(builder); RedisData.FinishRedisDataBuffer(builder, message); using var memoryStream = memoryStreamManager.GetStream("Redis.FlatBuffers", builder.DataBuffer.Data, builder.DataBuffer.Position, builder.Offset); return(memoryStream.ToArray()); }