c# - StackExchange RedisValue ToByteArray 不可序列化

标签 c# stackexchange.redis

我对 StackExchange.Redis 非常陌生,但我被分配了一项任务,将我们的 Redis 缓存转换为 StackExchange.Redis。也就是说,我们的方法之一以 byte[] 形式返回数据库值。

当我尝试:var redisData = database.StringGet(key).ToByteArray();

我收到此错误:

Type 'StackExchange.Redis.RedisValue' in Assembly 'StackExchange.Redis, Version=1.1.608.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable

但是当我这样做时:var redisData = database.StringGet(key);我得到一个值。

所以我的问题是:如何将 redisData 转换为 byte[]

最佳答案

如果你看一下 StringGet() 返回的类型,即 RedisValue,您会看到,它可以隐式转换为 stringbyte[] 。转换它所需要做的就是将其用作 byte[] 类型的变量(让隐式运算符完成工作)或显式转换它。

var redisData = (byte[])database.StringGet(key);

我假设您存储的数据是一个正确的byte[]数组。否则,如果您存储了一个字符串,例如。序列化对象,您将获得 string 的字节表示。

关于c# - StackExchange RedisValue ToByteArray 不可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125375/

相关文章:

c# - 如何遍历 List<dynamic>

c# - asp.net C# 操作可能会破坏运行时的稳定性

c# - 使用 StackExchange.Redis 库时对 Redis 的超时和缓慢请求

session - StackExchange RedisTimeoutException

c# - 使用 Ninject Dependency Creator 和 Event Broker 进行生命周期管理

C# WPF - 如何使用 ListView 更改 'Preferences' 窗口的显示网格?

c# - 如何按范围redis列表在Redis中添加自定义对象列表

c# - Stackexchange Redis - 如何对大量记录进行分页

c# - StackExchange.Redis 支持 ZPOP?

c# - 在 Silverlight 4 错误中使用帮助程序类进行数据绑定(bind)