我需要知道如何检索 Blob 存储中最后创建的 Blob。现在我使用 for 循环来执行此操作,但目录中大约有 50000 个 block blob。
如何有效地获取最后创建的 block blob?
我的代码如下:
string url = null;
foreach (var blobItem in subdir.ListBlobs())
{
url = blobItem.Uri.ToString();
}
url += signature;
if (url != pictureBoxLiveViewer.ImageLocation)
{
pictureBoxLiveViewer.ImageLocation = url;
}
这是每分钟滴答作响的计时器中的一个函数。所以这是低效的。
最佳答案
Blob 存储不支持查询功能,因此您需要自行实现。一个明显的选择是您当前执行此操作的方式,即列出 blob 并查找该列表中的最后一个 blob。
[大声思考]
您可以做的一件事是按时间倒序命名 blob(类似于表中的 PartitionKey 的方法)。所以你可以做的是使用这个逻辑命名你的 blob
var blobName = DateTime.MaxValue - DateTime.UtcNow
这样,当您列出 Blob 时,您将始终首先获得最新的 Blob。
另一种替代方法是将 blob 名称、创建日期和 blob URI 保存在表存储中。同样,您可能希望对 PartitionKey 使用与上面相同的逻辑。然后,您将查询表存储,从表中获取第一条记录,这将是您最近创建的 blob。
关于c# - 获取 Azure Blob 存储中的最后一个 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981788/