我对 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
,您会看到,它可以隐式转换为 string
和 byte[]
。转换它所需要做的就是将其用作 byte[]
类型的变量(让隐式运算符完成工作)或显式转换它。
var redisData = (byte[])database.StringGet(key);
我假设您存储的数据是一个正确的byte[]
数组。否则,如果您存储了一个字符串
,例如。序列化对象,您将获得 string
的字节表示。
关于c# - StackExchange RedisValue ToByteArray 不可序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41125375/