首页 > 其他分享 >体验.NET与文件存储服务MinIO

体验.NET与文件存储服务MinIO

时间:2023-04-19 21:11:06浏览次数:37  
标签:文件 存储 minio args var new NET MinIO

对象文件存储服务(OSS)主要用于存储零散的文件,和直接存储到本地文件系统中相比,有以下的几个优势:

  1. 跨服务器可用
  2. 兼容Amazon S3 API
  3. 横向扩容
  4. 高可用
  5. 支持加密

MinIO就是一个高性能的文件服务,我们使用.NET来操作一下。

部署MinIO

最简单的办法,就是在Docker上运行MinIO。可以使用以下命令启动MinIO:

docker run -p 9000:9000 -p 9001:9001 --name minio \
-e "MINIO_ACCESS_KEY=<your-access-key>" \
-e "MINIO_SECRET_KEY=<your-secret-key>" \
minio/minio server /data --console-address ":9001"

其中,<your-access-key><your-secret-key>需要替换为自己的访问密钥和秘密密钥。

.NET操作

需要先安装MinIO的包,直接nuget安装即可:

install-package minio

导入Minio命名空间,并创建一个MinioClient对象。

using Minio;

var endpoint = "localhost:9000";
var accessKey = "<your-access-key>";
var secretKey = "<your-secret-key>";

var minio = new MinioClient minio = new MinioClient()
                                .WithEndpoint("endpoint")
                                .WithCredentials("accessKey", "secretKey")
                                .Build();

连接到MinIO服务器并执行一些基本操作。列出存储桶:

var buckets = await minio.ListBucketsAsync();
foreach (var bucket in buckets)
{
    Console.WriteLine(bucket.Name + " " + bucket.CreationDateDateTime);
}

创建一个新的存储桶:

var args = new MakeBucketArgs().WithBucket(bucketName).WithLocation(loc);
await minio.MakeBucketAsync(args);

上传一个文件:

PutObjectArgs args = new PutObjectArgs().WithBucket(bucketName)
                            .WithFileName(fileName).WithObject(objectName);
await minio.PutObjectAsync(args);

下载文件:

var args = new GetObjectArgs().WithBucket(bucketName).WithObject(objectName)
                            .WithFile(fileName);
await minio.GetObjectAsync(args);

性能测试

经过测试,在本机运行docker的情况下,上传8M的文件,本地运行,上传0.6s,下载0.4s。1.G的文件,上传14s,下载9s。常用网络交换的文件一般不会太大,性能还可以。

标签:文件,存储,minio,args,var,new,NET,MinIO
From: https://www.cnblogs.com/podolski/p/17334644.html

相关文章

  • DAMA认证|2021年大数据存储安全如何管理?
    在大数据(Bigdata)时代,通过互联网、社交网络、物联网,人们能够及时全面地获得大信息。同时,信息自身存在形式的变化与演进,也使得作为信息载体的数据以远超人们想象的速度迅速膨胀。随着Ai、5G、IoT的兴起和发展,全球每年产生的数据以爆发的态势急速增长。数据存储是基础且关键......
  • 如何在 .NET Core WebApi 中处理 MultipartFormDataContent
    最近在对某个后端服务做.NETCore升级时,里面使用了多处处理MultipartFormDataContent相关内容的代码。这些地方从.NETFramework迁移到.NETCore之后的代码改动较大,由于本身没有测试覆盖,导致在部署QA环境后引发了一些问题。这里做一个技术复盘。什么是MultipartForm......
  • Kubernetes集群调度增强之超容量扩容
    作者:京东科技 徐宪章1什么是超容量扩容超容量扩容功能,是指预先调度一定数量的工作节点,当业务高峰期或者集群整体负载较高时,可以使应用不必等待集群工作节点扩容,从而迅速完成应用横向扩容。通常情况下HPA、ClusterAutosacler和超容量扩容同时使用以满足负载敏感度高的业务场景。超......
  • .Net 6.0 部署Linux+Nginx +PM2教程
    今天带大家将本地.Net6.0项目部署到Linux系统中,其中有用到Nginx反向代理和PM2进程管理工具,希望本偏文章能对你有所帮助,成为你成功路上的垫脚石!背景:在.Net5.0横空出世之后,.Net已经支持夸平台了,身为一名合格的码农,你敢说你不会用Linux?哈哈哈开个玩笑,因为工作最近......
  • AspNetCore 成长杂记(一):JWT授权鉴权之生成JWT(其一)
    引子最近不知怎么的,自从学了WebAPI(为什么是这个,而不是MVC,还不是因为MVC的Razor语法比较难学,生态不如现有的Vue等框架,webapi很好的结合了前端生态)以后,使用别人的组件一帆风顺,但是不知其意,突然很想自己实现一个基于的JWT认证服务,来好好了解一下这个内容。起步自从Session-Cooki......
  • 如何实现多存储文件传输,镭速提供多存储文件传输解决方案
    目前的文件传输系统中,大多数采用的文件传输系统只支持单个的存储。随着科技的发展,存储的类型越来越多,构建的越来越复杂,业务要求越来越多样化,只支持单个存储的文件传输系统是无法满足现有的需求。为实现高自由度的将不同的存储放在同一个服务器,镭速通过一种虚拟路径的方法,将不同对......
  • 升级 .net 6后 The view 'Index' was not found. The following locations were searc
    升级.net6之后Razor页面出现找不到view的情况,原因是.net6默认移除了一些依赖包,如下完美解决web工程添加包Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilationstartup.cs里面加上Compilation引用builder.Services.AddControllersWithViews().AddRazorRuntimeCompilation(); ......
  • .NET中Debug模式与Release模式
     一、Debug和Release的区别Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员调试。Debug模式下生成两个文件,除了.exe或.dll文件外,还有一个.pdb文件,该文件记录了代码中断点等调试信息......
  • Heterogeneous Graph Attention Network
    目录概符号说明HANNode-levelattentionSemantic-levelattention代码WangX.,JiH.,ShiC.,WangB.,CuiP.,YuP.andYeY.Heterogeneousgraphattentionnetwork.WWW,2019.概Attention+异构图.符号说明\(\mathcal{G}=(\mathcal{V,E})\),图;\(\phi:......
  • MySQL InnoDB存储引擎选择B+树作为索引数据结构的原因
    MySQLInnoDB存储引擎选择B+树作为索引数据结构的原因在于其特点与性能。B+树相比红黑树和B树,更适用于关系型数据库的特点,具体体现在以下几个方面:磁盘I/O效率:数据库的数据通常存储在磁盘上,磁盘I/O操作相对较慢。B+树的一个重要特点是它能减少磁盘I/O次数。B+树是一种多路平衡查......