一般做网站价格阿里巴巴做企业网站

张小明 2026/3/2 19:54:39
一般做网站价格,阿里巴巴做企业网站,wordpress 菜单 数据库,龙华网站制作要多少钱一、RediSearch是什么#xff1f;——Redis的“全文搜索引擎” RediSearch是Redis官方推出的内存全文搜索模块#xff08;用C语言编写#xff09;#xff0c;通过Redis Module机制集成到Redis中#xff0c;完美解决Redis原生不支持全文搜索的痛点。 它的核心价值#xf…一、RediSearch是什么——Redis的“全文搜索引擎”RediSearch是Redis官方推出的内存全文搜索模块用C语言编写通过Redis Module机制集成到Redis中完美解决Redis原生不支持全文搜索的痛点。它的核心价值兼容Redis生态复用Redis的内存、IO、持久化能力不用额外部署搜索引擎高性能基于倒排索引和内存存储查询延迟低至毫秒级功能丰富支持全文搜索、过滤、排序、分页甚至中文分词。比喻RediSearch是“Redis里的全文搜索插件”——不用搭ElasticsearchRedis本身就能做搜索二、入门使用从安装到基础命令2.1 安装RediSearchRediSearch的安装非常简单有两种方式方式1Docker快速启动推荐docker run -p 6379:6379 redislabs/redisearch:latest这会启动一个带RediSearch模块的Redis容器默认端口6379。方式2源码编译自定义需求下载源码git clone https://github.com/RediSearch/RediSearch.git编译make运行./src/redis-server --loadmodule ./src/libredisearch.so。2.2 基础命令建索引→存数据→查数据RediSearch的核心命令是FT.*FullText的缩写以下是入门必备1建索引FT.CREATE索引是RediSearch的核心相当于“搜索的字典”。建索引时需要指定索引名称数据来源比如Hash前缀product:索引字段哪些字段需要搜索。示例给商品Hash建全文索引# FT.CREATE 索引名 ON 数据类型 PREFIX 前缀数量 字段定义FT.CREATE product_idx ON HASH PREFIX 1 product:SCHEMAname TEXT WEIGHT 5 # 商品名称权重5搜索时优先级高description TEXT # 商品描述price NUMERIC # 商品价格支持范围查询category TAG # 商品分类支持过滤TEXT文本字段支持全文搜索NUMERIC数值字段支持范围查询比如price 100TAG标签字段支持精确过滤比如category 手机WEIGHT权重数值越高搜索时匹配度越高。2存数据用Redis原生命令RediSearch的索引依赖Redis的Hash数据结构存数据用HSET即可# 存商品数据自动同步到RediSearch索引HSET product:123 name iPhone 15 Prodescription 苹果最新旗舰手机A17芯片price 7999category 手机3查数据FT.SEARCH搜索用FT.SEARCH命令支持全文匹配、过滤、排序、分页# 搜索名称或描述包含“旗舰”的商品过滤分类为“手机”按价格升序取前10条FT.SEARCH product_idx 旗舰FILTER category 手机SORTBY price ASCLIMIT 0 10三、保姆级生产级使用从设计到优化3.1 索引设计避免“过度索引”或“索引不足”生产环境中索引设计直接影响性能和存储成本。关键原则只索引需要搜索的字段比如商品名称、描述需要搜索就索引库存不需要就不索引选择合适的字段类型文本搜索→TEXT范围查询价格、评分→NUMERIC精确过滤分类、品牌→TAG权重设置重要字段比如商品名称给更高权重提升搜索准确性中文分词RediSearch默认不支持中文分词需要安装插件比如redisearch-module-zh或用第三方分词器比如jieba。示例优化后的商品索引FT.CREATE product_idx_v2 ON HASH PREFIX 1 product:SCHEMAname TEXT WEIGHT 10 CHINESE # 中文分词description TEXT CHINESEprice NUMERICcategory TAGbrand TAGstock NUMERIC # 库存不需要搜索但可以过滤3.2 数据操作批量插入与更新生产环境中批量插入数据用pipeline管道可以大幅提升性能# 批量插入1000个商品用pipelineMULTIHSET product:1 name 华为Mate 60 description 麒麟芯片卫星通信 price 5999 category 手机 brand 华为HSET product:2 name 小米14 description 骁龙8 Gen3徕卡影像 price 3999 category 手机 brand 小米... # 更多商品EXEC3.3 查询优化避免“慢查询”RediSearch的查询性能取决于索引设计和查询语句。生产级优化技巧用FILTER代替全文搜索如果只需要过滤比如“价格1000的手机”不要用全文搜索用FILTER更快分页用LIMIT避免返回大量数据减少网络开销避免通配符开头比如FT.SEARCH product_idx *手机会导致全索引扫描性能极差缓存热门查询用Redis的String缓存热门搜索结果减少RediSearch的压力。3.4 持久化与集群生产环境的“容灾保障”持久化RediSearch的索引存在Redis的内存中RDB和AOF会自动保存索引数据重启后自动加载集群部署RediSearch支持Redis Cluster每个节点运行RediSearch模块索引会自动分片到不同节点提升吞吐量和可用性。四、原理深度剖析RediSearch的“搜索黑科技”4.1 核心数据结构倒排索引RediSearch的底层是倒排索引Inverted Index这是全文搜索的核心数据结构。倒排索引的结构词典Term Dictionary存储所有搜索词比如“旗舰”“手机”并映射到对应的Postings ListPostings List存储每个搜索词对应的文档ID和字段位置比如“旗舰”对应文档123的name字段。比喻倒排索引像“字典的部首索引”——比如“马”字部对应所有包含“马”的页码倒排索引的“旗舰”对应所有包含“旗舰”的商品ID。流程图倒排索引的构建与查询# 构建倒排索引文档1商品123→ 提取文本“iPhone 15 Pro 苹果旗舰手机”→ 分词为[iPhone, 15, Pro, 苹果, 旗舰, 手机]→ 每个词映射到文档123# 查询“旗舰”查询字符串→ 分词为[旗舰]→ 查词典找到“旗舰”对应的Postings List→ 返回文档1234.2 内存管理与Redis的“无缝衔接”RediSearch的内存管理完全依赖Redis的zmalloc索引数据存在Redis的key space中键名格式为idx:索引名zmalloc负责内存分配、统计和碎片整理RediSearch不用自己管理内存持久化时索引数据会随Redis的内存数据一起保存到RDB/AOF文件。4.3 查询流程从字符串到结果的“魔法”当执行FT.SEARCH时RediSearch的内部流程查询解析将搜索字符串分词比如“旗舰手机”→“旗舰”“手机”词典查找查每个词的Postings List结果合并合并多个词的Postings List比如同时包含“旗舰”和“手机”的文档过滤与排序用FILTER过滤不符合条件的文档用SORTBY排序分页返回用LIMIT返回指定范围的结果。五、Spring Boot生产级集成示例从0到15.1 依赖与配置1pom.xml加依赖Spring Boot 3.xdependencies!-- Spring Boot Data Redis --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- Lettuce连接池默认用Lettuce --dependencygroupIdio.lettuce/groupIdartifactIdlettuce-core/artifactId/dependency/dependencies2application.yml配置spring:redis:host: localhostport: 6379password: lettuce:pool:max-active: 8max-idle: 8min-idle: 0max-wait: -1ms5.2 代码实现建索引→存数据→查数据1配置类初始化RediSearch索引import org.springframework.boot.CommandLineRunner;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;Componentpublic class RediSearchInitializer implements CommandLineRunner {private final RedisTemplateString, Object redisTemplate;public RediSearchInitializer(RedisTemplateString, Object redisTemplate) {this.redisTemplate redisTemplate;}Overridepublic void run(String... args) throws Exception {// 初始化商品索引String createIndexScript FT.CREATE product_idx ON HASH PREFIX 1 product:SCHEMAname TEXT WEIGHT 10 CHINESEdescription TEXT CHINESEprice NUMERICcategory TAGbrand TAG;redisTemplate.execute(new DefaultRedisScript(createIndexScript, Long.class),Collections.emptyList());System.out.println(RediSearch索引创建成功);}}2服务类存数据与查数据import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.core.RedisCallback;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Service;import java.util.List;import java.util.Map;Servicepublic class ProductService {private final RedisTemplateString, Object redisTemplate;public ProductService(RedisTemplateString, Object redisTemplate) {this.redisTemplate redisTemplate;}// 存储商品数据public void saveProduct(MapString, String product) {String productId product: product.get(id);redisTemplate.opsForHash().putAll(productId, product);System.out.println(商品保存成功 productId);}// 搜索商品public ListMapString, String searchProducts(String keyword, String category, int page, int size) {String searchScript FT.SEARCH %s %sFILTER category %sSORTBY price ASCLIMIT %d %d;// 格式化参数索引名、关键词、分类、偏移量、数量String script String.format(searchScript, product_idx, keyword, category, page * size, size);// 执行查询返回结果列表ListObject results redisTemplate.execute(new DefaultRedisScript(script, List.class),Collections.emptyList());// 转换结果为Map简化处理实际需要解析RediSearch的返回格式return results.stream().skip(1) // 跳过第一个元素结果数量.map(result - (MapString, String) result).toList();}}3控制器类对外提供接口import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.List;import java.util.Map;RestControllerpublic class ProductController {private final ProductService productService;public ProductController(ProductService productService) {this.productService productService;}// 保存商品GetMapping(/product/save)public String saveProduct() {MapString, String product Map.of(id, 123,name, iPhone 15 Pro,description, 苹果最新旗舰手机A17芯片,price, 7999,category, 手机,brand, 苹果);productService.saveProduct(product);return 商品保存成功;}// 搜索商品GetMapping(/product/search)public ListMapString, String searchProducts(RequestParam String keyword,RequestParam(defaultValue 手机) String category,RequestParam(defaultValue 0) int page,RequestParam(defaultValue 10) int size) {return productService.searchProducts(keyword, category, page, size);}}5.3 测试与验证启动Spring Boot应用调用/product/save保存商品调用/product/search?keyword旗舰category手机搜索商品返回结果。六、生产级注意事项监控用INFO REDISEARCH命令监控索引状态比如index_count索引数量、doc_count文档数量、memory_usage内存使用异常处理处理RedisConnectionFailureException连接失败、RedisCommandExecutionException命令执行失败性能优化用批量插入pipeline、缓存热门查询、避免通配符开头中文分词安装redisearch-module-zh插件或用jieba分词器备份恢复定期用RDB/AOF备份恢复时索引会自动加载。总结RediSearch的“生产级价值”RediSearch不是“玩具”是Redis生态中解决全文搜索的“终极武器”复用Redis的所有能力不用额外部署高性能、低延迟适合高并发场景功能丰富支持全文搜索、过滤、排序。通过Spring Boot集成你可以快速将RediSearch用到生产环境中解决商品搜索、日志搜索、用户搜索等场景的需求。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

哈尔滨网站设计多少钱建筑行业做网站

前言 前段时间,知名机构麦可思研究院发布了 《2022年中国本科生就业报告》,其中详细列出近五年的本科绿牌专业,其中,信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景,想必无需我多言,作为…

张小明 2026/1/21 19:35:08 网站建设

网站的建设初步定位十年网站建设

RePKG工具使用指南:从入门到精通掌握壁纸资源提取 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾为无法保存Wallpaper Engine中精美壁纸的原始素材而烦恼&…

张小明 2026/1/21 19:34:06 网站建设

百汇游戏网站开发商头像模板在线制作软件

Science北京时间2025年12月5日,中国科学院分子植物科学卓越创新中心、植物高效碳汇重点实验室(中国科学院)杨卫兵研究团队在植物干细胞调控领域取得重要进展。研究成果以“Cell wall patterning regulates plant stem cell dynamics”为题&am…

张小明 2026/1/21 19:33:35 网站建设

有关网站建设的文章室内设计师怎么找

四大消息队列深度对比:Kafka、RabbitMQ、ActiveMQ、RocketMQ 一、核心特性总览对比特性维度Apache KafkaRabbitMQApache ActiveMQApache RocketMQ定位分布式流处理平台企业级消息代理传统消息中间件金融级分布式消息设计语言Scala/JavaErlangJavaJava协议支持自定义…

张小明 2026/3/2 18:24:37 网站建设

图片制作器在线制作长沙网站优化体验

BizTalk Server 2010 解决方案的部署、跟踪与管理 高可用性中主机和主机实例的角色 BizTalk 主机可定义为 BizTalk 组件运行的逻辑容器,而主机实例则是这些逻辑容器的物理实现。具体而言,主机实例是一个 Windows 服务,用于运行进程内 BizTalk 服务,并作为应用程序的工作进…

张小明 2026/1/21 19:32:33 网站建设

网站建设文章中核工建设集团网站

Great Expectations数据验证实战:5步构建企业级数据质量保障体系 【免费下载链接】great_expectations Always know what to expect from your data. 项目地址: https://gitcode.com/GitHub_Trending/gr/great_expectations 数据异常是每个数据团队都会面临的…

张小明 2026/1/21 19:32:02 网站建设