我们现在,简单地,redis
到目前为止,RedisJSON和reresearch是云计算中最受欢迎的Redis模块。(见图1)RedisJSON和RediSearch(与Redis绑定)被拉出超过2000次每一天。这就是为什么我们认为Redis的技术传教士Itamar Haber在4年前编写第一版时是一个有远见的人。4月份,我们做了几个重新讨论的公告与JSON、索引和全文搜索功能相关。今天,我们很高兴地宣布这些功能的私人预览。
在这篇博客中,我们将概述当前的RedisJSON功能。之后,我们将深入这个私有预览的新功能部分。使用reresearch在JSON文档上建立索引、查询和使用全文搜索的能力是这个版本最酷的新特性。最后,我们将向您展示如何快速入门。
当您没有RediSJSON时,您可以使用字符串数据结构模拟redis中的嵌套文档。
但是,如果我们需要更新文档的子部分,怎么办?
为了保持操作的原子,我们需要:
如果在此过程中另一个客户端更新了文档,我们可能需要重试所有这些步骤。
然而,有了RedisJSON,我们可以完成这个更新使用单个原子事务:
让我们看另一个例子,在这个例子中,您有一个大JSON,但在应用程序中只需要该文档的一个子部分。
没有RedisJSON:
你必须:
使用RediSJSON,您只能使用单个命令检索您需要的数据,最大限度地降低CPU周期,网络开销,以及最重要的延迟。
如您所见,RedisJSON简化了JSON文档操作。RedisJSON的当前GA版本(v1.0)是社区已经广泛使用的版本,它解决了用String数据结构建模嵌套结构的缺点。下面是它的一些关键功能的概述。
在Redis中存储(或更新)一个与key相关的JSON文档
替换子部件(如。键的字符串值)
将项目添加到集合或地图中
提取整个文件
使用JSONPath的子集提取它的一部分
我们宣布在重新isconf 2021上的此版本,今天我们很高兴地宣布它作为我们社区的选择小组的私人预览,以及我们社区的候选人。万博体育彩此版本有三个主要功能,即jsonpath表达式的全部支持,支持主动活动(带redise企业),以及索引,查询和使用json文档的全文搜索的能力与重新搜索。万博体育彩但还有更多!让我们潜入新的好吃的东西。
系统编程语言是一个以效率为导向的语言家族。用这些语言编写的程序通常是轻量级的,并提供最好的性能。这是的原因为什么Redis一直以来都是用c写的,这也解释了为什么Redis能够实现极低的延迟和高吞吐量。大多数Redis模块是用C、c++或Rust编写的,这些语言属于同一家族。
JSON在Rust社区得到了非常好的服务,包括非常快速和高效JSON连载和JSONPath实现.给予重新用户的那些实现的好处是显而易见的,只是需要一个映射在Redis模块API和RUDE之间。
下面是RUST重写的好处。这个新版本包含了对JSONPath的全面支持。现在可以使用JSONPath表达式的所有表达性。
给定一个JSON文档
通配符(以前仅限于第一项)
提取物片
一个更高级的过滤器表达式示例
主动活跃是Redis Enterprise提供的功能。万博体育彩Active-Active允许您将数据库复制到多个地理分布的Redis Enterprise集群中。万博体育彩用户可以使用本地读写延迟连接到最近的集群。
实施是基于无冲突复制数据类型(CRDT)技术。虽然Redis支持的大多数核心数据结构都实现了它,但Redis开发了强大的知识和经验,为JSON做的新实现证实了这一点。
应用程序开发人员现在可以ag万博下载万博最新版本下载苹果依赖于使用JSON文档构建地理分布式应用程序。以下是一个具有两个群集的活动活动环境中连续操作的示例:
让我们看看每个操作的细节:
当此功能在公共预览中时,我们将详细阐述所有同步流程,但如果您对此功能感兴趣,请随时立即触摸Support@www.szfbf.com。
本博客还宣布了RediSearch 2.2的私人预览版(作为Redis企业用户选择组的私人预览版,并作为我们社区的发布候选版)。万博体育彩
在本节中,我们将描述此新版本的重新搜索提供的新功能。但首先,这是我们一起将这两个流行模块发布的原因:
这个特别的新功能将把Redis的JSON功能提升到一个全新的水平。RediSearch已经不仅仅是一个Key-Value存储,到目前为止,RediSearch已经提供了对散列的索引和搜索功能。在幕后,RedisJSON 2.0公开了一个内部公共API。内部的,因为这个API是暴露给其他模块运行在一个Redis节点。Public,因为任何模块都可以使用这个API。reresearch2.2也是如此!
通过将其功能暴露给其他模块,RedisJSON为redisresearch提供了索引JSON文档的能力,因此用户现在可以通过索引和查询内容来查找文档。这些组合模块给你强大,低延迟,以json为导向的文档数据库!
我们来看看会是什么样子。
我们应该首先使用JSON填充数据库的JSON文档。设置命令。
要创建一个新的索引,我们使用FT.CREATE命令。索引的模式现在接受JSONPath表达式。表达式的结果被编入索引,并与一个属性相关联(这里是:title)。
现在我们可以使用FT.SEARCH进行搜索查询并找到JSON文档:
聚合是重新搜索的强大功能,可用于创建分析报告或执行面位搜索样式查询。现在重新启动可以访问JSON文档,可以使用JSONPath表达式从JSON文档加载任何值,并在管道中使用该值是否索引。
让我们创建一个索引:
将JSON文档添加到数据库:
然后使用从JSON文档中提取的两个数值进行简单的计算:
使用新版本的reresearch,现在可以用不同的参数索引相同的值(哈希值上的字段,或者JSON文档中的JSON值)。下面是一个典型的用例,由这个新特性解决:
让我们有一个包含属于类别的文档的数据库。
使用TAG类型,你可以轻松过滤任何类别的搜索结果:
但是,如果您还想对类别进行全文搜索,该怎么办呢?
到目前为止,对于散列,您必须将值复制到两个字段中,这将消耗两倍的内存。
这就是FT.CREATE…AS变得更加方便的地方。让我们回到我们漂亮而简单的文档:
...并使用新的功能:
…和…
宾果!我们现在可以通过标签进行过滤,并在同一字段中进行全文搜索,而不必复制数据。
大多数Redis命令的时间复杂度都有很好的文档记录。作为一个例子,h随着O(n)的复杂性,“其中n是所要求的字段数。”使用RedIsearch,可以编写高级查询。但是,FT.Search和ft.aggregate命令的复杂性取决于查询的复杂性。
我们希望为您提供一些工具,帮助您理解在执行查询时发生了什么,以便找出在哪里消耗了时间,以及如何优化查询。新FT.PROFILE命令返回一个树,其中显示RediSearch执行查询所使用的主要步骤。对于每一步,给出一个时间信息。
那么在我们正在做出模糊搜索时,我们会在重新搜索中发生什么?
让我们来看一个例子:
我们已准备好介绍我们的查询。让我们运行分析并分解分析结果。
复述。cloud:6379> FT.PROFILE idx SEARCH LIMITED QUERY "%hello%"
首先,我们得到结果。有用的是检查分析查询是否返回预期的内容。
这里是总时间,称为“配置文件时间”,因为它包括收集配置文件信息所花费的时间。
在解析查询和构建执行计划时花在的时间:
以下是在字典中查找模糊匹配所花费的时间:
最后,你有没有想过建立搜索结果是什么意思?我们需要计算每个文档的全文分数,按得分排序,最后加载字段。使用此信息,您可以识别瓶颈,使查询更快,提高服务器的性能。
我们相信这些新功能将改变应用开发者和Redis社区的游戏规则。万博最新版本下载苹果ag万博下载你可以从这里开始。
为了开始你可以拉以下码头工人形象使用:预览标记:
Docker Run -P 6379:6379 Redis / Redismod:预览
或者,您可以从RC1发布标记(v2.2.0RediSearch,v2.0.0对于RedisJSON),并加载它们到Redis。
一旦您启动并运行,您可以尝试所有上述命令或使用此命令快速入门指南.我们还将推出一系列关于RedisMart,这是我们展示的一个在线零售应用程序在RedisConf 2021的主题演讲中.RedisMart以地理分布方式部署RedisJSON和redisresearch,以提供最佳的在线零售体验。在本系列中,我们将逐步指导您如何构建这个应用程序。
目前正在升级以下客户端列表,以便您能够使用具有良好开发人员体验的新功能。检查最新版本和/或拉出请求(此时大多数都在支持主分支机构上的预览版本)。
RedisJSON | RediSearch | |
node . js | redis-modules-sdk | redis-modules-sdk |
java. | JredisJSON | JRediSearch |
。网 | NRedisJSON | NRediSearch |
Python | redisjson-py | redisearch-py |
我们欢迎任何反馈,bug报告,功能请求,而我们的工作朝着通用可用性。在文档网站或github存储库中留下反馈RediSearch(在Github)或RedisJSON(在Github),或于年月日与我们联络不和.