微服务必学!RedisSearch终极使用指南,你值得拥有!

🎉🎉欢迎来到我的CSDN主页!🎉🎉
🏅我是尘缘,一个在CSDN分享笔记的博主。📚📚
👉点击这里,就可以查看我的主页啦!👇👇
尘缘的个人主页
🎁如果感觉还不错的话请给我点赞吧!🎁🎁
💖期待你的加入,一起学习,一起进步!💖💖

在这里插入图片描述

目录

  • 引言
  • 1 RedisSearch 安装与设置
    • 1.1 RedisSearch 安装步骤
    • 1.2 如何配置 RedisSearch
  • 2 RedisSearch 核心概念
    • 2.1 数据模型与索引
    • 2.2 文档与文档属性
    • 2.3 索引与搜索
  • 3 RedisSearch 使用方法
    • 3.1 如何创建索引
    • 3.2 如何执行搜索
    • 3.3 高级功能的使用,如多关键字搜索、分页搜索、自定义评分函数等
  • 4 RedisSearch 与微服务的集成
    • 4.1 如何将 RedisSearch 集成到微服务架构中
    • 4.2 RedisSearch 在微服务中的最佳实践
    • 4.3 与其他服务的交互与数据传输
  • 5 RedisSearch 的优势与限制
    • 5.1 RedisSearch 的优势
    • 5.2 RedisSearch 的限制与挑战
  • 6 总结

引言

RedisSearch 是一个基于 Redis 的搜索引擎模块,它提供了全文搜索、索引和聚合功能。通过 RedisSearch,可以为 Redis 中的数据创建索引,执行复杂的搜索查询,并实现高级功能,如自动完成、分面搜索和排序。利用 Redis 的高性能特点,RedisSearch 可以实现高效的搜索和实时分析。对于微服务架构来说,RedisSearch 可以作为搜索服务的一部分,提供快速、高效的搜索能力,对于提高用户体验和性能具有重要的意义。

1 RedisSearch 安装与设置

在开始使用 RedisSearch 之前,需要先进行学习安装和设置。以下是 RedisSearch 安装与设置的步骤:

1.1 RedisSearch 安装步骤

  1. 确保已经安装了 Redis,并且 Redis 的版本是 v6.x 或更高版本。
  2. 打开 Redis 的官方网站,下载 RedisSearch 模块的最新版本。
  3. 将下载的 RedisSearch 模块解压,并将文件夹中的 redi*.**.so 文件复制到 Redis 的 src 目录下。
  4. 在 Redis 的 src 目录下执行以下命令进行编译:
cd src  
make redis-search

编译成功后,会在 src 目录下生成 redis-search.oredis-search.so 文件。

  1. 将生成的文件复制到 Redis 的安装目录中,执行以下命令:
cp redis-search.o /usr/local/redis/bin/  
cp redis-search.so /usr/local/redis/lib/
  1. 现在可以启动 RedisSearch 了。

1.2 如何配置 RedisSearch

RedisSearch 的配置文件是一个 JSON 格式的文件,可以放置在 Redis 的配置目录中。下面是一个简单的配置示例:

{  "redis-search": {  "module-path": "redis-search.so",  "index-pattern": "index*",  "index-num-shards": "3",  "index-num-replicas": "2",  "search-query-template": "{text_field}:{text_field}*{score_field}",  "search-query-boost-fields": {  "score_field": 2.0,  "title_field": 1.5,  "description_field": 1.0  },  "index-client-timeout": "5000",  "index-client-max-retries": "3",  "index-client-idle-timeout": "30000",  "index-client-channel-timeout": "1000",  "index-on-demand": false,  "index-concurrent-create": false,  "datastore": {  "module-path": "redis-datastore.so",  "nodes": [{"host": "127.0.0.1", "port": "6379"}]  }  }  
}

在上面的配置中,配置了 RedisSearch 的基本参数,包括模块路径、索引模式、索引数量、搜索查询模板等。此外,还配置了 Redis 数据源的相关参数。下面是一些配置参数的解释:

  • redis-search:RedisSearch 的配置参数。
  • module-path:RedisSearch 模块的文件路径。
  • index-pattern:用于匹配索引的名称前缀。例如,index* 表示匹配以 index 开头的所有索引。
  • index-num-shards:每个索引分片的数量。可以理解为每个索引的分区数。
  • index-num-replicas:每个索引分片的副本数量。可以理解为每个分区的副本数量。
  • search-query-template:搜索查询的模板字符串。在执行搜索查询时,需要按照该模板格式指定查询条件。其中 {text_field} 表示文本字段,{score_field} 表示评分字段。
  • search-query-boost-fields:评分字段的权重设置。例如,如果设置 {score_field:2.0},则表示该字段的得分会乘以 2.0。

2 RedisSearch 核心概念

2.1 数据模型与索引

在RedisSearch中,数据模型指的是用于构建索引的数据结构和格式。RedisSearch支持使用JSON数据类型进行索引,因此可以将数据模型定义为JSON文档的结构和格式。

在创建索引之前,需要定义一个数据模型,指定索引中包含的字段和每个字段的类型。例如,以下是一个简单的数据模型示例:

{  "title": "string",  "description": "text",  "category": "string",  "price": "float"  
}

在创建索引时,需要指定一个数据模型,RedisSearch会根据数据模型中定义的字段类型自动创建相应的索引。

2.2 文档与文档属性

文档是指符合数据模型格式要求的JSON文档,每个文档表示一条数据记录。文档中的每个字段对应一个属性,属性定义了该字段的数据类型和索引方式。

例如,以下是一个符合上述数据模型的文档示例:

{  "title": "RedisSearch入门指南",  "description": "RedisSearch是一个基于Redis的搜索引擎模块,用于全文搜索、索引和聚合数据。",  "category": "搜索引擎",  "price": 39.99  
}

在文档中,titledescriptioncategoryprice分别对应一个属性,属性的类型分别为stringtextstringfloat

2.3 索引与搜索

索引是用于加速搜索过程的数据结构,通过创建索引,可以快速找到包含特定关键词的文档。

索引是一种倒排表(Inverted Index),它存储了每个字段值与相关文档ID的映射关系。当文档被索引时,RedisSearch会为每个字段创建一个倒排表。

搜索操作是基于索引执行的。当执行搜索查询时,RedisSearch会根据查询语句中的关键词和查询条件生成一个正排表(Forward Index),该表中包含所有符合条件的文档ID。接着,RedisSearch会将正排表和倒排表相结合,计算每个文档的得分并返回搜索结果。

通过将数据模型中的字段类型和索引类型定义清楚,可以创建高效的索引,从而加速搜索过程。

3 RedisSearch 使用方法

3.1 如何创建索引

创建索引需要以下步骤:

  1. 定义数据模型(如3.1节所述)。
  2. 使用Redis命令或Redis客户端库将数据模型中的字段和类型添加到Redis数据库中。
  3. 使用Redis命令或Redis客户端库调用创建索引的函数或命令,例如CREATE INDEX命令或rediSearch_CreateIndex函数。

在创建索引时,需要指定以下参数:

  • 数据模型的名称。
  • 索引类型(可选,默认为default)。
  • 字段名称和类型。

例如,以下是一个使用Redis命令创建索引的示例:

CREATE INDEX index_name ON data_model_name(field_name1, field_name2) TYPE(hash)

这个命令将在名为data_model_name的数据模型上创建一个名为index_name的索引,该索引包含名为field_name1和field_name2的字段,并且这些字段的类型被定义为hash。

还可以使用Redis客户端库(如Redisson)来创建索引,例如:

Config config = new Config();  
config.useSingleServer().setAddress("redis://127.0.0.1:6379");  
RedissonClient redisson = Redisson.create(config);  IndexBuilder indexBuilder = redisson.getBucket("index_name");  
indexBuilder.field("field_name1", DataType.STRING);  
indexBuilder.field("field_name2", DataType.STRING);  
indexBuilder.create();

这个代码段使用Redisson客户端库创建一个名为index_name的索引,并将字段field_name1和field_name2添加到该索引中。

3.2 如何执行搜索

执行搜索需要以下步骤:

  1. 使用Redis命令或Redis客户端库调用搜索命令或函数,例如SEARCH命令或rediSearch_Search函数。
  2. 指定搜索查询的字段和值,以及其他搜索选项(如分页、排序等)。

例如,以下是一个使用Redis命令执行搜索的示例:

SEARCH index_name field_name1:"search_term" field_name2:[min_value TO max_value] SORTBY field_name3 DESC LIMIT 0 10

这个命令将在名为index_name的索引中执行搜索查询,查找包含search_term的field_name1字段或范围在min_value和max_value之间的field_name2字段,并根据field_name3字段进行排序,最后返回前10个结果。

还可以使用Redis客户端库(如Redisson)来执行搜索,例如:

RScoredSearch search = redisson.getScoredSearch("index_name");  
search.query("field_name1", "search_term");  
search.addSorting("field_name3", SortingOrder.DESC);  
search.setLimit(0, 10);  
List<ScoredEntry> result = search.execute();

这个代码段使用Redisson客户端库执行搜索查询,并在结果中添加排序和限制条件,最后返回前10个结果。

3.3 高级功能的使用,如多关键字搜索、分页搜索、自定义评分函数等

  1. 多关键字搜索:

RedisSearch支持多关键字搜索,可以通过指定多个字段和值来实现。例如,以下是一个使用Redis命令执行多关键字搜索的示例:

SEARCH index_name field_name1:"keyword1" field_name2:"keyword2" field_name3:[min_value TO max_value]

这个命令将在名为index_name的索引中执行多关键字搜索,查找包含keyword1的field_name1字段、包含keyword2的field_name2字段以及范围在min_value和max_value之间的field_name3字段。

还可以使用Redis客户端库(如Redisson)来执行多关键字搜索,例如:

RSearch search = redisson.getSearch("index_name");  
search.query()  .field("field_name1", "keyword1")  .field("field_name2", "keyword2")  .range("field_name3", minValue, maxValue)  .sort("field_name4", SortingOrder.DESC)  .limit(0, 10)  .execute();

这个代码段使用Redisson客户端库执行多关键字搜索,并在结果中添加排序和限制条件,最后返回前10个结果。

  1. 分页搜索:

RedisSearch支持分页搜索,可以通过指定偏移量和限制数量来实现。例如,以下是一个使用Redis命令执行分页搜索的示例:

SEARCH index_name SORTBY field_name1 DESC LIMIT offset, count

这个命令将在名为index_name的索引中执行分页搜索,根据field_name1字段进行排序,并从offset偏移量开始返回count个结果。

还可以使用Redis客户端库(如Redisson)来执行分页搜索,例如:

RSearch search = redisson.getSearch("index_name");  
search.setSorting("field_name1", SortingOrder.DESC);  
search.setLimit(offset, count);  
List<Entry> result = search.execute().getEntries();

这个代码段使用Redisson客户端库执行分页搜索,并在结果中添加排序和限制条件,最后返回指定偏移量和限制数量的结果。

  1. 自定义评分函数:

RedisSearch支持自定义评分函数,可以定义自己的评分规则并应用于搜索结果。可以使用addScore()方法将自定义评分函数应用于每个搜索结果。例如,以下是一个使用Redis命令执行自定义评分函数的示例:

php复制代码SEARCH index_name field_name1:"keyword" SORTBY field_name2 ASC ADDSCORE custom_score(score)

这个命令将在名为index_name的索引中执行搜索查询,查找包含keyword的field_name1字段,并根据field_name2字段进行排序。然后使用ADDSCORE关键字将自定义评分函数custom_score()应用于每个搜索结果,其中score是结果得分。

4 RedisSearch 与微服务的集成

4.1 如何将 RedisSearch 集成到微服务架构中

  1. 确定RedisSearch的部署方式:RedisSearch可以以单节点或集群的方式部署。根据微服务架构的要求,可以选择将RedisSearch部署在每个服务中独立运行,或者将RedisSearch作为共享服务,为多个服务提供搜索功能。
  2. 选择数据模型和索引类型:根据业务需求,选择合适的数据模型和索引类型,以便对数据进行高效的全文搜索、聚合和排序等操作。
  3. 配置RedisSearch服务:为RedisSearch配置相关的参数,例如索引的创建、维护和查询参数等。
  4. 集成RedisSearch客户端库:在每个微服务中集成RedisSearch客户端库,例如Redisson客户端库,以便对RedisSearch服务进行访问和操作。
  5. 设计数据交互接口:为RedisSearch设计数据交互接口,例如RESTful API接口,以便其他微服务能够调用RedisSearch的查询和索引功能。
  6. 实现数据传输:实现数据传输机制,例如使用消息队列、RESTful API或事件通知等方式,将数据从其他微服务传输到RedisSearch中进行索引和查询。

4.2 RedisSearch 在微服务中的最佳实践

  1. 独立部署:将RedisSearch作为独立的服务进行部署,使其与其他微服务相互隔离,以减少故障和运维的影响。
  2. 数据分片:对于大规模数据,可以使用RedisSearch的数据分片功能,将数据分布在多个节点上,以提高搜索性能和容量。
  3. 索引策略:根据业务需求,选择合适的索引策略,例如全文索引、组合索引等,以提高搜索的准确性和效率。
  4. 数据更新策略:对于实时数据更新操作,需要考虑RedisSearch的数据更新策略,以保证搜索结果的准确性和一致性。
  5. 数据保护:使用RedisSearch的数据保护功能,例如主从复制、持久化备份等,以防止数据丢失和故障恢复。
  6. 安全控制:对于敏感数据,要使用RedisSearch的安全控制功能,例如访问控制、加密等措施,以确保数据的安全性和隐私保护。

4.3 与其他服务的交互与数据传输

  1. 异步通信:使用异步通信方式,例如消息队列(如RabbitMQ、Kafka等),将其他服务的数据传输到RedisSearch中进行索引和查询。
  2. 同步通信:使用同步通信方式,例如RESTful API或gRPC等,将其他服务的数据传输到RedisSearch中进行索引和查询。为了保证数据的实时性和一致性,可以使用实时通信协议(如WebSocket、SSE等)进行数据传输。
  3. 数据聚合:在数据传输过程中,可以使用数据聚合的方式将多个微服务的数据整合到一起,以提供更全面的搜索结果。
  4. 服务间调用:在需要调用其他微服务的接口时,可以使用RPC(Remote Procedure Call)方式或者其他服务间调用协议进行调用。例如,使用gRPC、RESTful API或者消息队列等协议进行服务间调用。

5 RedisSearch 的优势与限制

5.1 RedisSearch 的优势

RedisSearch 是一个高性能、低延迟的搜索引擎,它基于 Redis 数据库实现。下面是一些 RedisSearch 的优势:

  1. 高性能:RedisSearch 能够在秒级别内处理数百万条数据的索引和搜索请求,这使得 RedisSearch 适用于大规模数据处理和高并发访问的场景。
  2. 低延迟:RedisSearch 在设计和实现时充分考虑了性能和延迟,通过优化算法和数据结构,实现了低延迟的查询响应。
  3. 灵活的数据模型:RedisSearch 支持灵活的数据模型,可以处理各种类型的数据,包括字符串、数字、日期、数组和嵌套对象等。
  4. 强大的查询能力:RedisSearch 支持丰富的查询语法和操作符,可以实现对数据的复杂分析和挖掘。
  5. 可扩展性:RedisSearch 支持分布式部署,可以通过增加节点数量来提高系统的可扩展性和处理能力。
  6. 与 Redis 集成:RedisSearch 与 Redis 数据库完美集成,可以利用 Redis 的高性能和分布式特性,同时保证数据的实时性和一致性。
  7. 开源社区支持:RedisSearch 是开源项目,得到了社区的广泛关注和支持,可以获得丰富的第三方库和插件。

5.2 RedisSearch 的限制与挑战

虽然 RedisSearch 具有一定的优势,但也存在一些限制和挑战,如下所示:

  1. 数据量限制:RedisSearch 是基于 Redis 数据库实现的,因此其数据量受限于 Redis 的内存容量。在处理大规模数据时,需要考虑到 Redis 的内存限制。
  2. 数据类型限制:RedisSearch 支持的数据类型相对有限,主要支持字符串、数字、日期、数组和嵌套对象等基本类型,对于更复杂的数据类型(如全文文本、图像、视频等)的支持可能不够完善。
  3. 实时性限制:虽然 RedisSearch 支持实时索引和搜索,但对于实时性要求极高的场景(如新闻资讯、金融交易等),可能无法满足需求。
  4. 分布式部署的挑战:虽然 RedisSearch 支持分布式部署,但在实际应用中可能会面临一些挑战,如数据分片、节点间通信、数据一致性等问题。
  5. 与其他系统的集成:RedisSearch 与其他系统的集成可能存在一定的难度和复杂性,需要了解不同系统的接口和数据格式,并进行相应的对接和转换。

6 总结

RedisSearch 是基于 Redis 的搜索引擎模块,提供全文搜索、索引和聚合功能。它适用于微服务架构,可以作为搜索服务的一部分,提供快速、高效的搜索能力。安装和配置 RedisSearch 需要按照一定步骤进行,包括下载、编译和设置配置文件等。RedisSearch 的核心概念包括数据模型与索引、文档与属性、索引与搜索等。创建索引和执行搜索都有相应的步骤和命令,可以使用 Redis 命令或 Redis 客户端库来操作。在微服务中集成 RedisSearch 需要确定部署方式、选择数据模型和索引类型、配置服务和集成客户端库,并设计数据交互接口和传输机制。最后,RedisSearch 具有高性能、低延迟、灵活的数据模型、强大的查询能力、与 Redis 集成以及开源社区支持等优势,但也存在数据量限制、数据类型限制、实时性限制和分布式部署挑战等限制和挑战。

在这里插入图片描述

到这里我的分享就结束了,欢迎到评论区探讨交流!!
💖如果觉得有用的话还请点个赞吧 💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/101024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于乌燕鸥优化的BP神经网络(分类应用) - 附代码

基于乌燕鸥优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于乌燕鸥优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.乌燕鸥优化BP神经网络3.1 BP神经网络参数设置3.2 乌燕鸥算法应用 4.测试结果&#x…

机器学习、深度学习相关的项目集合【自行选择即可】

【基于YOLOv5的瓷砖瑕疵检测系统】 YOLOv5是一种目标检测算法&#xff0c;它是YOLO&#xff08;You Only Look Once&#xff09;系列模型的进化版本。YOLOv5是由Ultralytics开发的&#xff0c;基于一阶段目标检测的概念。其目标是在保持高准确率的同时提高目标检测的速度和效率…

Python并发编程简介

1、Python对并发编程的支持 多线程: threading, 利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成多进程: multiprocessing, 利用多核CPU的能力&#xff0c;真正的并行执行任务异步IO: asyncio,在单线程利用CPU和IO同时执行的原理&#xff0c;实现函数异步执行使用Lo…

Altium如何查看导线长度?凡亿悄悄地告诉你

Altium Designer&#xff08;AD&#xff09;是全球应用最广泛的EDA工具之一&#xff0c;它提供了一套完整的解决方案&#xff0c;从原理图设计、模拟、PCB布局和布线&#xff0c;到最后的Gerber输出&#xff0c;都可在该平台上完成&#xff0c;因此是很多电子工程师的必学软件之…

Java学数据结构(4)——PriorityQueue(优先队列) 二叉堆(binary heap)

前言 数据结构与算法作为计算机科学的基础&#xff0c;是一个重点和难点&#xff0c;在实际编程中似乎看不它们的身影&#xff0c;但是它们有随处不在&#xff0c;如影随形。 本系列博客是《数据结构与算法分析—Java语言描述》的读书笔记&#xff0c;合集文章列表如下&#…

【开发日记】Docker搭建Maven私服

文章目录 前言1、拉取镜像2、创建本地目录3、启动容器4、访问5、上传依赖6、项目配置私服 前言 Maven私服是一种特殊的远程仓库&#xff0c;它是架设在局域网内的仓库服务&#xff0c;用来代理位于外部的远程仓库&#xff08;中央仓库、其他远程公共仓库&#xff09;。 在公司…

docker 部署 xxl-job SpringBoot 整合 xxl-job 执行任务

概述 XXL-JOB是一个轻量级的分布式任务调度平台&#xff0c;具有以下特点&#xff1a; 调度模块&#xff1a;负责管理调度信息&#xff0c;发出调度请求&#xff0c;支持可视化和动态的操作&#xff0c;监控调度结果和日志&#xff0c;支持执行器Failover 执行模块&#xff1…

【axmol-2.1 vs cocos2dx性能备忘】

axmol-2.1-08c0605 cocos2d-x-4.0 cocos2d-x-3.17.1 结论 从多边形Sprite渲染性能测试用例看&#xff0c;axmol相对于cocos2d-x-4.0提升42%, 相对于cocos2d-x-3.17.1提升30.8%

mysql面试题35:MySQL有关权限的表有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL有关权限的表有哪些? MySQL中与权限相关的表主要包括以下几个: user表:存储MySQL用户的基本信息,包括用户名、密码等。可以使用以下命令…

CPU的执行流程

CPU的执行流程 取指令&#xff08;Instruction Fetch&#xff09;&#xff1a;CPU 从程序存储器&#xff08;通常是内存&#xff09;中获取要执行的下一条指令。这个过程包括以下步骤&#xff1a; CPU 从程序计数器&#xff08;Program Counter&#xff0c;PC&#xff09;中获…

chromium线程模型(1)-普通线程实现(ui和io线程)

通过chromium 官方文档&#xff0c;线程和任务一节我们可以知道 &#xff0c;chromium有两类线程&#xff0c;一类是普通线程&#xff0c;最典型的就是io线程和ui线程。 另一类是 线程池线程。 今天我们先分析普通线程的实现&#xff0c;下一篇文章分析线程池的实现。&#xff…

2023年危险化学品经营单位主要负责人证考试题库及危险化学品经营单位主要负责人试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年危险化学品经营单位主要负责人证考试题库及危险化学品经营单位主要负责人试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特…

接口测试及常用接口测试工具

首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把数据库共享给你&#xff0c;他只能给你…

dbeaver 插入别名设置禁用

1&#xff0c;前提 最近换了一个数据库连接工具&#xff0c;初次使用&#xff0c;非常别扭。 2&#xff0c;问题 首先遇到的第一个问题是 每次输入from table时&#xff0c;后面就会自动添加一个表别名 tt&#xff0c;然后语句就变成这样 from table tt &#xff0c;所以每次…

四维曲面如何画?matlab

clc; clear all [theta,phi]meshgrid(linspace(0,pi,50),linspace(0,2*pi,50)); zcos(theta); xsin(theta).*cos(phi); ysin(theta).*sin(phi); f-1*((x.*y).2(y.*z).2(z.*x).^2); surf(sin(theta).*cos(phi).*f,sin(theta).*sin(phi).*f,cos(theta).*f,f) 结果

Maven系列第2篇:安装、配置、mvn运行过程详解

maven系列目标&#xff1a;从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第2篇。 本文主要内容 linux中安装maven window中安装maven mvn命令运行的原理 maven配置设置 本篇环境 jdk1.8 maven3.6.2 我们要写java代码&#xff0c;需要安装jdk&…

微信小程序案例:2-2本地生活

文章目录 一、实现步骤&#xff08;一&#xff09;创建项目&#xff08;二&#xff09;创建页面&#xff08;三&#xff09;准备图片素材&#xff08;四&#xff09;编写页面结构1、编写轮播区域页面结构2、编写九宫格区域页面结构 &#xff08;五&#xff09;编写页面样式1、编…

【PPT制作】基础篇

文章目录 一、PPT制作必要的基础设置1.1 自动保存1.2 字体嵌入1.3 撤销步数1.4 图像大小和质量 二、必备快捷键三、设计四原则四、总结 ヾ(๑╹◡╹)&#xff89;" 没有坚持的努力&#xff0c;本质上并没有多大意义ヾ(๑╹◡╹)&#xff89;" 一、PPT制作必要的基础…

MinIO的安装与使用

文章目录 1.MINIO是什么&#xff1f;2.MINIO安装3.启动脚本4.打开MINIO页面5.MC命令6.MINIO备份脚本 1.MINIO是什么&#xff1f; MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。 MinIO与…

Python 人工智能 Machine Learning 机器学习基础知识点详细教程(更新中)

人工智能基本介绍 人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。它试图了解智能的实质&#xff0c;并生产出一种新的能以人类智能相似的方式做出反应的智…