对象文件存储服务(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。常用网络交换的文件一般不会太大,性能还可以。

体验.NET与文件存储服务MinIO的更多相关文章

  1. 第2-3-1章 文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 文件存储服务 1. 需求背景 2. 核心功能 3. 存储策略 3.1 本地存储 3.2 FastDFS存储 3.3 云存储 3.4 minio 4. 技术设计 文件存储服务 全套代码及资料全部完 ...

  2. 第2-3-3章 文件处理策略-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.2 文件处理策略 5.2.1 FileStrategy 5.2.2 AbstractFileStrategy 5.2.3 LocalServiceImpl 5.2.4 FastDfsServ ...

  3. 第2-3-4章 上传附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.3 接口开发-上传附件 5.3.1 接口文档 5.3.2 代码实现 5.3.3 接口测试 5.3 接口开发-上传附件 第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令 第 ...

  4. 第2-3-5章 删除附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.4 接口开发-根据id删除附件 5.4.1 接口文档 5.4.2 代码实现 5.4.3 接口测试 5.4.4 测试ALI和FAST_DFS以及MINIO上传和删除的接口 5.4.4.1 阿里 ...

  5. 第2-3-6章 打包批量下载附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.6 接口开发-根据文件id打包下载附件 5.6.1 接口文档 5.6.2 代码实现 5.6.3 接口测试 5.7 接口开发-根据业务类型/业务id打包下载 5.7.1 接口文档 5.7.2 ...

  6. 第2-3-7章 个人网盘服务接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.8 导入其他接口代码 5.8.1 接口导入-分页查询附件 5.8.2 接口导入-根据业务类型/业务id查询附件 5.9 导入网盘服务接口 5.9.1 导入FileController 5.9 ...

  7. 第2-3-8章 分片上传和分片合并的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.10 接口开发-分片上传 5.10.1 分片上传介绍 5.10.2 前端分片上传插件webuploader 5.10.3 后端代码实现 5.10.3.1 接口文档 5.10.3.2 代码开发 ...

  8. 对象存储服务-Minio

    Mino 目录 Mino 对象存储服务 Minio 参考 Minio 架构 为什么要用 Minio 存储机制 纠删码 MinIO概念 部署 单机部署: Docker 部署Minio 分布式Minio ...

  9. nodejs实现一个文件存储服务

    nodejs实现一个文件存储服务 模拟文件上传下载功能: PUT 上传一个文件,URL表示在服务器上待上传文件的路径. GET 下载一个文件,URL表示在服务器上待下载文件的路径.

  10. 对象存储服务MinIO安装部署分布式及Spring Boot项目实现文件上传下载

    目录 一.MinIO快速入门 1. MinIO简介 2. CentOS7更换成阿里云镜像 3. 安装 3.1 下载 3.2 运行测试 4. 配置脚本执行文件 4.1 创建配置执行文件 4.2 执行 二 ...

随机推荐

  1. PasteForm最佳CRUD实践,实际案例PasteTemplate详解之3000问(二)

    作为"贴代码"力推的一个CRUD实践项目PasteTemplate,在对现有的3个项目进行实战后效果非常舒服!下面就针对PasteForm为啥我愿称为最佳CRUD做一些回答: 哪里 ...

  2. Android usb广播 ACTION_USB_DEVICE_ATTACHED流程源码分析

    整体流程图 大概意思就是UsbHostManager启动监控线程,monitorUsbHostBus会调用usb_host_run函数(使用inotify来监听USB设备的插拔)不停的读取bus总线, ...

  3. YashanDB发布会圆满收官,V23.1三大新品引领国产数据库技术与应用突破!

    11月8日,YashanDB 2023年度产品发布会在线上成功召开.本次产品发布会以"惟实·励新"为主题,宣布崖山数据库系统YashanDB 内核能力.产品形态.生态创新全面升级, ...

  4. WPF-超市管理系统

    1. 新建 WPF APP (net framework )项目

  5. Android复习(三)清单文件中的元素——> activity

    转自:  https://developer.android.google.cn/guide/topics/manifest/activity-element <activity> 语法: ...

  6. HDU-ACM 2024 Day2

    T1004 a*b problem(HDU 7448) 不会. T1005 小塔的养成游戏之梦(HDU 7449) 不会. T1009 强攻计策(HDU 7453) 容易发现初始速度是多少对答案没有影 ...

  7. 鱼香ROS一键安装软件

    一行代码-解决人生烦恼 推荐语:一行代码搭建机器人开发环境(ROS/ROS2/ROSDEP) 开源地址:https://github.com/fishros/install 一键安装指令 wget h ...

  8. 一文彻底弄懂MySQL的各个存储引擎,InnoDB、MyISAM、Memory、CSV、Archive、Merge、Federated、NDB

    MySQL 中的存储引擎是其数据库管理系统的核心模块,用于处理不同类型的数据存储和检索操作.每种存储引擎都有自己的特点,适用于不同类型的应用场景.MySQL 最常用的存储引擎包括 InnoDB.MyI ...

  9. switch、case语句的问题

    switch.case语句: 点击查看代码 int state = 1; switch(state) { case 1: { //状态1执行的程序 } case 2: { //状态2执行的程序 } d ...

  10. Mysql数据库个人整理笔记

    数据类型 tinyint/smallint/int/bigint float double char/varchar date/time/datetime/timestamp DDL 数据库 crea ...