一文了解亿级数据检索:RedisSearch

news2025/4/18 8:24:01

文章目录

  • 1.什么是Redis Search
  • 2.为什么要使用Redis Search
  • 3.RedisSearch 的核心特性
  • 4.RedisSearch 的原理
    • 4.1 倒排索引
    • 4.2 索引创建与数据存储
    • 4.3 数据模型
    • 4.4 搜索查询处理
    • 4.5 高性能与可扩展性:
  • 5.有了ES为什么还需要RedisSearch
  • 5.RedisSearch的安装
  • 6.RedisSearch的基本用法
    • 6.1 创建索引
    • 6.2 添加数据
    • 6.3 搜索数据
    • 6.4 更新数据
    • 6.5 删除数据
    • 6.6 高级搜索功能
    • 6.7 处理搜索结果
    • 6.8 索引的优化和维护
  • 7.RedisSearch 的性能优化
  • 8.SpringBoot集成Redis Search

在这里插入图片描述

1.什么是Redis Search

Redis Search 是 Redis 官方提供的全文搜索引擎,只是Redis 的一个模块,它可以在 Redis 中存储和查询文本数据。

它为Redis 提供全文搜索、索引和复杂查询功能。它基于内存存储,结合了 Redis 的高性能和倒排索引技术,支持实时搜索、聚合分析、模糊匹配等场景。RedisSearch 适用于需要快速检索结构化非结构化数据的应用,如电商搜索、日志分析、实时推荐等。

2.为什么要使用Redis Search

Redis Search 的主要优点包括:

  • 高性能:Redis Search 基于内存存储,查询速度非常快,适合处理大量的搜索请求。
  • 支持多种数据类型:Redis Search 可以存储和查询多种数据类型,包括字符串、哈希、列表、集合等。
  • 支持全文搜索:Redis Search 支持全文搜索,可以根据关键词或短语进行搜索。
  • 支持复杂查询:Redis Search 支持复杂查询,可以使用 AND、OR、NOT 等逻辑运算符进行组合查询。
  • 支持聚合分析:Redis Search 支持聚合分析,可以对搜索结果进行统计和分析。
  • 支持模糊匹配:Redis Search 支持模糊匹配,可以根据关键词的相似度进行搜索。
  • 支持排序:Redis Search 支持根据字段进行排序,可以按照相关性、时间戳等进行排序。
  • 支持索引:Redis Search 支持索引,可以对搜索字段进行索引,提高查询效率。
  • 支持事务:Redis Search 支持事务,可以保证搜索操作的原子性。
  • 支持插件:Redis Search 支持插件,可以扩展功能。

3.RedisSearch 的核心特性

1.​​全文搜索​​:内置中文分词支持(需加载Friso分词器),支持复杂查询语法,包括短语匹配、通配符、布尔逻辑等,支持对存储在 Redis 中的数据进行全文搜索,无论是简单的字符串还是复杂的文档结构。

2.​实时索引​​:数据插入后立即可搜索,适合实时场景(微秒级延迟)。
​​
3.多维度查询​​:支持文本、数字、地理位置等多种数据类型,可进行范围过滤和排序。
​​
4.高级功能​​:丰富的聚合分析功能,自动补全、高亮显示、分面搜索、拼写纠错、自定义评分。

5.​高性能与扩展性​​:基于内存的倒排索引,支持分布式集群,可处理大规模数据和高并发请求

4.RedisSearch 的原理

4.1 倒排索引

倒排索引是一种用于文本搜索的索引结构,提到倒排索引大家基本都会想到ES,它将文档中的每个单词作为关键词,将包含该单词的文档列表作为值,存储在一个索引表中,其核心就是通过词项(Term)到文档的映射实现快速检索,类似传统搜索引擎

倒排索引的主要优点包括:

  • 快速搜索:通过关键词快速找到包含该关键词的文档列表,适用于搜索引擎。
  • 支持模糊匹配:可以通过关键词的模糊匹配来找到相关的文档。
  • 支持聚合分析:可以对关键词进行统计和分析,例如计算关键词的频率、相关性等。
  • 支持排序:可以根据关键词的频率、相关性等进行排序。
  • 支持高亮显示:可以将搜索结果中的关键词进行高亮显示,方便用户阅读。

4.2 索引创建与数据存储

RedisSearch 允许用户为存储在 Redis 中的数据创建索引,这些索引保存在内存中,确保了快速搜索和查询响应。

创建索引时,需要指定索引的名称、字段、权重等信息。这些信息定义了搜索的范围和优先级。

数据以文档的形式存储在索引中,每个文档由一个唯一的 ID 和多个字段组成。

4.3 数据模型

数据以JSON 文档 形式存储,每个文档包含唯一 ID 和多个字段,字段类型需预先定义(如 TEXT、NUMERIC)

4.4 搜索查询处理

解析查询语句生成执行计划,结合正排表(文档 ID 列表)和倒排表(词项索引)计算相关性得分

  • 当用户执行搜索查询时,RedisSearch 会解析查询语句,并根据索引中的信息进行搜索。
  • 查询可以包括关键字、短语、范围、布尔运算等,以满足复杂的搜索需求。
  • RedisSearch 支持多种查询语法,使得搜索更加灵活和强大。

搜索结果会根据相关性进行排序,相关性最高的文档会首先显示。评分机制通常基于TF-IDF (词频-逆文档频率)等算法,同时考虑字段的权重和其他因素。用户还可以自定义评分函数,以满足特定的业务需求。

4.5 高性能与可扩展性:

由于 RedisSearch 是基于 Redis 的,因此它继承了 Redis 的高性能特性。

RedisSearch 的设计考虑了并发访问和大规模数据处理的需求,因此具有良好的可扩展性。通过合理的配置和优化,RedisSearch 可以轻松应对高并发的搜索请求。

RedisSearch 的原理主要基于内存中的倒排索引技术,通过高效的搜索算法和灵活的查询语法,为用户提供快速、准确的搜索体验。同时,其高性能和可扩展性使得 RedisSearch 能够应对大规模数据和并发访问的挑战。

5.有了ES为什么还需要RedisSearch

ElasticSearch 在倒排索引领域已经取得优异的成绩,更适合PB级的数据。但是尺有所短、寸有所长,并不是所有场景都可以使用其解决问题。

当然ES作为目前最主流的检索引擎,优势还是很多的,如:

  • 分布式架构:原生支持PB级数据水平扩展
  • 分词能力:内置ICU、IK等专业分词器,支持同义词、拼音等高级功能
  • 数据持久化:基于Lucene的段存储机制保障数据可靠性
  • 生态体系:完善的ELK技术栈(Kibana/Logstash/Beats)
  • 大数据之神:PB级数据分布式处理无压力

但其局限性也很明显:

  • 资源消耗:内存需求高(建议配置堆内存30GB+),32GB 机器实际可用不到 10GB
  • 运维复杂度:需要专业集群管理(分片分配、版本升级等)
  • 实时性:默认近实时(1秒延迟)
  • 学习成本:DSL查询语法较复杂
  • 冷启动索引加载时间:10 亿数据初始化索引要 8 小时(Redis Search 只要 40 分钟)
  • 性能瓶颈:索引构建、查询性能受限于硬件资源

这些痛点在一些具体的应用场景下是绝对无法容忍的:

  • 高频更新场景:某游戏排行榜每分钟更新 10 万次,ES 集群直接崩盘
  • 极致延迟要求:金融订单系统要求 <1ms 响应,ES 跪地求饶
  • 小型数据集合:10GB 数据硬上 ES,维护成本比开发成本还高

而redis Search的优势较ES相比就十分明显

  • 极致速度:内存计算带来碾压级性能,微秒级响应
  • 吞吐量:百万级写入12万/秒(单线程)左右
  • 实时王者:写入即查无延迟,适合金融/社交等场景
  • 成本杀手:节省50%+服务器资源
  • 高频更新:基于内存高频更新,CPU的占用率更低
  • 资源消耗低:轻量级,1亿数据仅需数GB内存,单节点可运行

Redis Search VS ElasticSearch
在这里插入图片描述

选型建议
在这里插入图片描述

在我们具体实施时也可全部进行兼容,如:用Redis Search作缓存层,ElasticSearch作持久层

5.RedisSearch的安装

本文针对docker安装进行介绍,其他安装方式可自行百度。
详情可参见:《docker安装redisSearch》

6.RedisSearch的基本用法

6.1 创建索引

在RedisSearch中,你需要先创建一个索引来定义哪些字段可以被搜索,以及这些字段的权重等。

FT.CREATE idx:myindex SCHEMA title TEXT WEIGHT 5.0 content TEXT

这条命令创建了一个名为idx:myindex的索引,其中title字段的权重是5.0,content字段的权重是默认的1.0。

6.2 添加数据

向索引中添加数据,你可以使用Redis的HSET命令或者RedisSearch的FT.ADD命令。以下是使用HSET添加数据的示例:

HSET doc:1 title "Redis Search" content "Redis Search is a powerful search engine built on top of Redis."

当然你也可以使用FT.ADD命令

FT.ADD idx:myindex doc:1 1.0 FIELDS title "Redis Search" content "Redis Search is a powerful search engine built on top of Redis."

这条命令将一个名为doc:1的文档添加到索引中,其中包含title和content两个字段。

6.3 搜索数据

使用RedisSearch进行搜索,你可以使用FT.SEARCH命令。以下是一个简单的搜索示例:

FT.SEARCH idx:myindex "search engine" LIMIT 0 10

这条命令将在索引中搜索包含"search engine"的文档,并返回匹配的结果。

6.4 更新数据

你可以使用HSET命令来更新已存在的数据:

HSET doc:1 title "Updated Redis Search"

这条命令将更新doc:1文档的title字段。
或者使用FT.ADD命令以相同的ID添加文档,这将覆盖原有的文档内容:

FT.ADD idx:myindex doc:1 1.0 FIELDS title "Updated Redis Search" content "Redis Search is a powerful search engine built on top of Redis."

这条命令将更新doc:1文档的title和content字段。

6.5 删除数据

使用Redis的DEL命令可以删除数据:

DEL doc:1

这条命令将删除doc:1文档。
或者,如果你想从索引中删除特定的文档,可以使用FT.DEL命令:

FT.DEL idx:myindex doc:1

6.6 高级搜索功能

RedisSearch支持多种高级搜索功能,包括:

  • 短语搜索
    • 如果你想搜索一个确切的短语,可以使用双引号将短语括起来:
    FT.SEARCH idx:myindex "Redis Search"
    
    这条命令将搜索包含"Redis Search"的文档。
  • 使用通配符搜索
    • 你可以使用通配符*来匹配任意字符:
    FT.SEARCH idx:myindex "Redis*"
    
    这条命令将搜索以"Redis"开头的文档。
    FT.SEARCH idx:myindex "Redis*Search"
    
    这条命令将搜索以"Redis"开头的文档,后面跟着任意字符,并以 Search 结尾的短语。
  • 布尔逻辑搜索
    • 你可以使用AND、OR和NOT等布尔逻辑运算符来组合多个搜索条件:
    # 这条命令将搜索同时包含"Redis"和"Search"的文档。
    FT.SEARCH idx:myindex "Redis AND Search"
    # 这条命令将搜索同时包含"Redis"或"Search"的文档。
    FT.SEARCH idx:myindex "Redis OR Search"
    # 这条命令将搜索同时包含"Redis"但不含"Search"的文档。
    FT.SEARCH idx:myindex "Redis NOT Search"
    
  • 使用字段限定符
    • 你可以使用@符号来限定搜索字段:
    FT.SEARCH idx:myindex "@title:Redis"
    
    这条命令将搜索title字段中包含"Redis"的文档。
  • 使用范围搜索
    • 你可以使用[]符号来指定范围:
      假设你有一个包含价格字段price的索引,你可以这样搜索价格在 10 到 20 之间的商品:
    FT.SEARCH idx:myindex "@price:[10 20]"
    
  • 排序
    • 你可以使用SORTBY子句来指定排序字段和排序方式:
    FT.SEARCH idx:myindex "@price:[10 20]" SORTBY price ASC LIMIT 0 10
    
  • 地理空间搜索
    • 你可以使用GEOSEARCH命令来进行地理空间搜索:
    GEOSEARCH idx:myindex FROM 37.7749 -122.4194 BYRADIUS 10000 m WITHDIST
    
    这条命令将搜索距离给定经纬度10000米范围内的文档。
  • 聚合分析
    • 你可以使用AGGREGATE命令来进行聚合分析:
    FT.AGGREGATE idx:myindex "*" GROUPBY 1 @title REDUCE COUNT 0 AS count
    
    这条命令将按照title字段进行聚合分析,并统计每个title的文档数量。
    FT.AGGREGATE idx:myindex "*" GROUPBY 1 @title REDUCE COUNT 0 AS count SORTBY count DESC LIMIT 0 10
    
    这条命令将按照title字段进行聚合分析,并统计每个title的文档数量,然后按照文档数量降序排序,并返回前10个结果。
  • 自定义评分
    • 你可以使用SCORE命令来自定义评分:
    FT.SEARCH idx:myindex "Redis" SCORE 10
    
    这条命令将搜索包含"Redis"的文档,并将评分设置为10。
  • 分页
    • 你可以使用LIMIT子句来指定分页参数:
    FT.SEARCH idx:myindex "Redis" LIMIT 0 10
    
    这条命令将搜索包含"Redis"的文档,并返回前10个结果。
  • 高亮显示
    • 你可以使用HIGHLIGHT子句来高亮显示搜索结果中的关键词:
    FT.SEARCH idx:myindex "Redis" HIGHLIGHT 1
    
    这条命令将搜索包含"Redis"的文档,并高亮显示搜索结果中的关键词。
    FT.SEARCH idx:myindex "Redis" HIGHLIGHT 1 TAGSFRONT "<em>" TAGSBACK "</em>"
    
    这条命令将搜索包含"Redis"的文档,并高亮显示搜索结果中的关键词,并使用<em>标签将关键词包围起来。
  • 自定义查询语法
    • 你可以使用自定义查询语法来扩展搜索功能:
    FT.SEARCH idx:myindex "@title:Redis" SORTBY price ASC LIMIT 0 10
    
    这条命令将搜索title字段中包含"Redis"的文档,并按照price字段升序排序,并返回前10个结果。
    FT.SEARCH idx:myindex "@title:Redis" SCORE 10
    
    这条命令将搜索title字段中包含"Redis"的文档,并将评分设置为10。
    FT.SEARCH idx:myindex "@title:Redis" HIGHLIGHT 1
    
    这条命令将搜索title字段中包含"Redis"的文档,并高亮显示搜索结果中的关键词。
    FT.SEARCH idx:myindex "@title:Redis" SORTBY price ASC LIMIT 0 10 SCORE 10
    
    这条命令将搜索title字段中包含"Redis"的文档,并按照price字段升序排序,并返回前10个结果,同时将评分设置为10。
    FT.SEARCH idx:myindex "@title:Redis" SCORE 10 HIGHLIGHT 1
    
    这条命令将搜索title字段中包含"Redis"的文档,并将评分设置为10,同时高亮显示搜索结果中的关键词。

6.7 处理搜索结果

当你执行搜索查询时,RedisSearch会返回一个包含搜索结果的列表。每个结果包含文档的ID和相关信息。你可以根据需要处理这些结果,例如提取文档的内容、计算相关性分数等。
如:在电商平台中搜索包含关键词"蓝牙耳机"的商品。

FT.SEARCH idx:products "@name:蓝牙耳机" SORTBY price ASC LIMIT 0 10

这条命令将搜索name字段中包含"蓝牙耳机"的商品,并按照price字段升序排序,并返回前10个结果。
返回结果​​:
在这里插入图片描述

说明​​:

  • 第1行为总匹配数(3条)。
  • 后续每两行为一个文档的详细信息:ID + 键值对字段

6.8 索引的优化和维护

在使用RedisSearch时,你可能需要对索引进行优化和维护,以提高搜索性能和减少资源消耗。以下是一些常见的索引优化和维护任务:

  • 定期重建索引
    • 当你的数据发生变化时,你可能需要定期重建索引以确保索引的准确性和一致性。你可以使用FT.DROP命令删除旧索引,并使用FT.CREATE命令创建新索引。
  • 优化索引配置
    • 你可以根据你的数据特点和查询需求,优化索引配置。例如,你可以调整字段的权重、使用不同的分词器等。
  • 监控和调优
    • 你可以使用FT.INFO命令来监控索引的状态和性能。根据监控结果,你可以进行调优,例如调整索引配置、优化查询语句等。
  • 定期清理过期数据
    • 如果你有一个过期数据的策略,你可以定期清理过期数据,以减少索引的大小和查询的复杂度。
  • 定期进行索引优化
    • 你可以使用FT.OPTIMIZE命令来对索引进行优化,以减少索引的大小和查询的复杂度。
      FT.OPTIMIZE idx:myindex
    
  • 获取索引信息
    • 使用 FT.INFO 命令可以获取有关索引的详细信息,如文档数量、索引大小等。
      FT.INFO idx:myindex
    

这些是使用RedisSearch的基本操作。当然,RedisSearch还提供了许多高级功能,你可以查阅RedisSearch的官方文档来了解更多详细信息和高级用法。

7.RedisSearch 的性能优化

在使用 RedisSearch 时,为了提高性能,你可以采取以下几种优化策略:

  • 索引优化:合理设计索引结构,避免不必要的字段被索引,以提高搜索效率。
  • 查询优化:根据查询的复杂性和数据量调整查询策略,如使用分页、排序和过滤等选项来减少搜索范围。
  • 硬件和配置:确保 Redis 服务器具有足够的硬件资源(如 CPU、内存和网络带宽),并根据实际情况调整 Redis 和 RedisSearch 的配置参数。

8.SpringBoot集成Redis Search

由于该小节篇幅较长,可移步至:《SpringBoot集成RedisSearch》

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

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

相关文章

uniApp开发微信小程序-连接蓝牙连接打印机上岸!

历经波折三次成功上岸&#xff01; 三次经历简单絮叨一下&#xff1a;使用uniAppvue开发的微信小程序&#xff0c;使用蓝牙连接打印机&#xff0c;蓝牙所有的接口都是插件中封装的&#xff0c;用的插件市场中的这个&#xff1a; dothan-lpapi-ble &#xff1b;所以&#xff0c…

【特权FPGA】之按键消抖

完整代码如下所示&#xff1a; timescale 1ns / 1ps// Company: // Engineer: 特权 // // Create Date: // Design Name: // Module Name: // Project Name: // Target Device: // Tool versions: // Description: // // Dependencies: // // Revision: // …

P1331 洛谷 海战

题目描述 思路 这个题需要读懂题意&#xff0c;即“什么样的形式表示两只船相撞&#xff1f;” ----> 上下相邻或左右相邻 如果图是不和法的&#xff0c;一定存在如下结构&#xff1a; # # . # 或 # # # . 或 # . # # 或 . # # #即四个格子里有三个#&#xff0c;一个"…

网络安全·第二天·ARP协议安全分析

今天我们来考虑考虑计算机网络中的一类很重要的协议-------ARP协议&#xff0c;介绍他用途的同时&#xff0c;分析分析ARP协议存在的一些漏洞及其相关的协议问题。 一、物理地址与IP地址 1、举例 在计算机网络中&#xff0c;有两类地址十分关键&#xff0c;一类称为物理地址&a…

华为手机或平板与电脑实现文件共享

1.手机或平板与电脑在同一个网络 2.打开手机或平板端&#xff0c;设置---更多连接----快分享或华为分享打开此功能-----开启共享至电脑 3.打开电脑&#xff0c;网络中就可看到手机端分享的用户名称 4. 登陆就可访问手机 5.常见问题 5.1 电脑未发现本机 5.2 修改了访问密码后再…

幻兽帕鲁(Palworld)在线工具集:让游戏体验更轻松!

幻兽帕鲁(Palworld)在线工具集&#xff1a;让游戏体验更轻松&#xff01; &#x1f3ae; 工具介绍 为了帮助广大幻兽帕鲁玩家更好地享受游戏&#xff0c;我开发了这个全面的在线工具集。无需下载安装&#xff0c;打开网页即可使用&#xff0c;完全免费&#xff01; &#x1…

学习51单片机Day02---实验:点亮一个LED灯

目录 1.先看原理图 2.思考一下&#xff08;sbit的使用&#xff09;&#xff1a; 3.给0是要让这个LED亮&#xff08;LED端口设置为低电平&#xff09; 4.完成的代码 1.先看原理图 比如我们要让LED3亮起来&#xff0c;对应的是P2^2。 2.思考一下&#xff08;sbit的使用&…

如何使用通义灵码学习JavaScript和DOM

如果你看到了本手册的页面数量&#xff0c;你就会发现JavaScript的API真的非常丰富&#xff0c;在MDN上专门有一大分类用于介绍JavaScript的API&#xff0c;但软件工程行业有一个著名法则叫2-8法则&#xff0c;意思是只有20%的内容会经常使用到&#xff0c;而80%的内容只在一些…

基于labview的多功能数据采集系统

基于labview的多功能数据采集系统&#xff08;可定制功能&#xff09; 包含基于NI温度采集卡。电流采集卡。电压采集卡的数据采集功能 数据存储 报表存储 数据处理与分析 生产者消费者架构 有需要可联系

SpringMVC基础一(SpringMVC运行原理)

先了解MVC&#xff0c;在JavaWeb基础五中。 回忆servlet&#xff0c;在javaweb基础二中。 创建一个web项目&#xff1a; 1、新建maven项目&#xff0c;导入依赖。&#xff08;junit、springmvc、spring-webmvc、servlet-api、jsp-api、jstl&#xff09; <groupId>org…

蓝桥杯刷题--宝石组合

在一个神秘的森林里&#xff0c;住着一个小精灵名叫小蓝。有一天&#xff0c;他偶然发现了一个隐藏在树洞里的宝藏&#xff0c;里面装满了闪烁着美丽光芒的宝石。这些宝石都有着不同的颜色和形状&#xff0c;但最引人注目的是它们各自独特的 “闪亮度” 属性。每颗宝石都有一个…

红宝书第三十一讲:通俗易懂的包管理器指南:npm 与 Yarn

红宝书第三十一讲&#xff1a;通俗易懂的包管理器指南&#xff1a;npm 与 Yarn 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、基础概念 包管理器&#xff1a;帮你自动下载和管理第三方代码库&#xff08;如…

进程状态的转换

进程处于运行态时&#xff0c;它必须已获得所需的资源&#xff0c;在运行结束后就撤销。只有在时间片到或出现了比现在进程优先级更高的进程时才转变成就绪态。 就绪 → 运行​​ ​​触发条件​​&#xff1a;进程被​​调度器选中​​&#xff08;如时间片轮转或优先级调度&…

SpringAOP新链浅析

前言 在复现CCSSSC软件攻防赛的时候发现需要打SpringAOP链子&#xff0c;于是跟着前人的文章自己动手调试了一下 参考了大佬的文章 https://gsbp0.github.io/post/springaop/#%E6%B5%81%E7%A8%8B https://mp.weixin.qq.com/s/oQ1mFohc332v8U1yA7RaMQ 正文 依赖于Spring-AO…

【动手学深度学习】现代卷积神经网络:ALexNet

【动手学深度学习】现代卷积神经网络&#xff1a;ALexNet 1&#xff0c;ALexNet简介2&#xff0c;AlexNet和LeNet的对比3&#xff0c; AlexNet模型详细设计4&#xff0c;AlexNet采用ReLU激活函数4.1&#xff0c;ReLU激活函数4.2&#xff0c;sigmoid激活函数4.3&#xff0c;为什…

PyTorch深度学习框架60天进阶学习计划 - 第37天:元学习框架

PyTorch深度学习框架60天进阶学习计划 - 第37天&#xff1a;元学习框架 嘿&#xff0c;朋友们&#xff01;欢迎来到我们PyTorch进阶之旅的第37天。今天我们将深入探索一个非常有趣且强大的领域——元学习(Meta-Learning)&#xff0c;也被称为"学会学习"(Learning to…

【中检在线-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

UE5 运行时动态将玩家手部模型设置为相机的子物体

在编辑器里&#xff0c;我们虽然可以手动添加相机&#xff0c;但是无法将网格体设置为相机的子物体&#xff0c;只能将相机设置为网格体的子物体 但是为了使用方便&#xff0c;我们希望将网格体设置为相机的子物体&#xff0c;这样我们直接旋转相机就可以旋转网格体&#xff0…

EasyExcel-一款好用的excel生成工具

EasyExcel是一款处理excel的工具类&#xff0c;主要特点如下&#xff08;官方&#xff09;&#xff1a; 特点 高性能读写&#xff1a;FastExcel 专注于性能优化&#xff0c;能够高效处理大规模的 Excel 数据。相比一些传统的 Excel 处理库&#xff0c;它能显著降低内存占用。…

WEB攻防-Java安全JNDIRMILDAP五大不安全组件RCE执行不出网不回显

目录 1. RCE执行-5大类函数调用 1.1 Runtime方式 1.2 Groovy执行命令 1.3 脚本引擎代码注入 1.4 ProcessImpl 1.5 ProcessBuilder 2. JNDI注入(RCE)-RMI&LDAP&高版本 2.1 RMI服务中的JNDI注入场景 2.2 LDAP服务中的JNDI注入场景 攻击路径示例&#…