首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Azure Blob存储中反序列化对象的最快方法?

从Azure Blob存储中反序列化对象的最快方法?
EN

Stack Overflow用户
提问于 2017-08-10 14:03:48
回答 2查看 2K关注 0票数 1

在经历了大量的中央RavenDb中断之后,我们希望在Azure Blob存储中缓存某些对象。Redis没有与ABS相同的SLA保证,因此Redis已被排除在外。

这些对象的检索和反序列化每分钟都会发生,并且需要非常快地进行。

下面是我们试图用于反序列化的代码,但是它比从Raven检索对象慢5-6倍。要优化它吗?对象大小约为8mb。

代码语言:javascript
复制
var blob = container.GetBlockBlobReference(entityId + ".json");

var serializer = new JsonSerializer
{
    ObjectCreationHandling = ObjectCreationHandling.Reuse,
    NullValueHandling = NullValueHandling.Include,
    ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
    PreserveReferencesHandling = PreserveReferencesHandling.All,
    TypeNameAssemblyFormat = FormatterAssemblyStyle.Full,
    TypeNameHandling = TypeNameHandling.All
};

using (var stream = new MemoryStream())
{
    blob.DownloadToStream(stream);
    stream.Position = 0;

    using (var sr = new StreamReader(stream))
    using (var jsonTextReader = new JsonTextReader(sr))
    {
        var accountOut =  serializer.Deserialize<Account>(jsonTextReader);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-13 19:31:55

事实证明,使用单个序列化器对象,而不是在循环的每个周期中重新创建是解决问题的方法。一旦我们开始缓存JsonSerializer对象并重用它,Blob存储的反序列化性能就会达到RavenDb的50%。

票数 1
EN

Stack Overflow用户

发布于 2017-08-10 18:41:07

想要速度而不能使用Redis (不管出于什么原因)?只有一个正确的答案:CosmosDB

它非常快,并支持SSD存储。单个区域内99.99%的可用性(如果需要,只需通过Portal单击即可实现geo复制)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45615982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档