简单地说,我们现在是Redis
复述,有一个通用的数据结构集从简单的字符串一直到强大的抽象,比如复述,流.原生数据类型可以带您走很长的路,但是有些用例可能需要解决方法。一个例子是Redis要求使用二级索引,以超越基于键的搜索/查找,以获得更丰富的查询功能。虽然你可以使用排序集、列表等来完成任务,你需要考虑一些权衡因素。
输入RediSearch!可以作为复述,模块由于拥有一流的二级索引引擎,RediSearch提供了灵活的搜索功能。它提供了强大的功能,如全文搜索、自动完成、地理索引等等。
为了展示RediSearch的力量,这篇博客文章提供了一个如何使用RediSearch的实例Redis的Azure缓存在……的帮助下去使用RediSearch去客户端.它的设计目的是为您提供一组应用程序,让您能够实时接收tweet,并使用reresearch灵活地查询它们。
具体来说,您将学习如何:
如前所述,示例服务允许您实时使用tweet,并使它们可以通过reresearchch进行查询。
它有两个组成部分:
在这一点上,我将深入了解如何启动和运行这个解决方案,以便您可以看到它的实际作用。然而,如果你有兴趣了解各个组件是如何工作的,请参阅下面的代码浏览部分和本博客的GitHub repo:https://github.com/abhirockzz/redisearch-tweet-analysis.
先决条件
开始使用这个快速入门教程设置一个Redis万博体育彩企业层缓存在Azure上。一旦你完成了设置,确保你有Redis主机名和访问键方便:
我们服务的两个组件都可以作为Docker容器使用推特索引服务和搜索API服务.(如果你需要构建自己的Docker映像,请使用GitHub repo上相应的Dockerfile。)
现在您将看到将这些部署到是多么方便Azure容器实例,它允许您在托管的、无服务器的Azure环境中按需运行Docker容器。
一个docker-compose.yml文件定义各个组件(tweets-search和tweets-indexer).你所需要做的就是更新它来替换你的Azure Redis实例的值以及你的Twitter开发者帐户凭证。这是它的文件全部:
克隆GitHub repo:
将这两个服务组件作为容器组:
(请注意,当前在ACI上下文中可用的Docker Compose命令以码头工人组成.这是不一样的docker-compose用连字符。)
你会看到类似这样的输出:
等待服务启动,也可以检查Azure门户.一旦两个服务都启动并运行,你可以检查它们各自的日志:
如果一切顺利,twitter消费者服务应该已经启动。它会读取一系列推文,并将它们保存到Redis。
是时候查询推特数据了。为此,您可以使用IP地址和完全限定的域名(FQDN)访问Azure容器实例中的REST API容器访问).运行命令查找IP码头工人ps并检查港口部分的输出(如下所示):
您现在可以运行所有类型的查询!在深入研究之前,这里有一个你可以在搜索查询中使用的索引属性的快速想法:
(注意,我使用旋度在下面的例子中,但是我强烈推荐VS Code的“REST Client”)
设置搜索服务API的基础URL:
开始简单和查询所有的文档(使用*):
你会看到类似这样的输出:
注意到标题页面大小和搜索结果:这些是从应用程序传递的自定义头,主要用于演示分页和限制。为了响应我们的“get me all the documents”查询,我们在Redis中找到了12个结果,但JSON体返回了10个条目。这是因为reresearchgo API的默认行为,你可以使用不同的查询参数来改变它,例如:
或者,例如,搜索从iPhone发送的推文:
您可能并不总是希望查询结果中包含所有属性。例如,这是如何获取用户(Twitter屏幕名)和tweet文本:
如何查询用户名(例如以jo开头):
你也可以在查询中使用属性的组合:
我们找找有特定标签的推文怎么样?可以使用多个标签(用|)?
想知道有多少条推特拜登话题标签是最近创建的?使用范围查询:
如果您幸运地在tweets中获取了一些坐标信息,您可以尝试提取它们,然后进行查询坐标属性:
这些只是几个例子。您可以自由地进一步试验和尝试其他查询。这一节在reresearch文档中可能会派上用场!
重要的是:完成之后,不要忘记停止Azure容器实例中的服务和相应的容器:
使用Azure Portal删除Azure Redis实例是你创造的。
本节提供单个组件代码的高级概述。这应该使它更容易导航GitHub回购中的源代码。
tweet消费者/索引器:
go-twitter图书馆被用来与Twitter互动。
它验证到Twitter流API:
并在单独的gorroutine中监听一系列推文:
注意到去index.AddData (tweetToMap(微博))这是索引组件被调用的地方。它连接到Redis的Azure缓存:
然后在重新创建之前删除索引(以及现有的文档):
索引及其相关文档被删除,以允许您从一个干净的状态开始,这使得实验/演示更容易。如果您愿意,您可以选择注释掉这部分。
每个tweet的信息存储在哈希(名为微博:< tweet ID >)使用HSET操作:
推文搜索暴露REST API查询RediSearch。所有选项(包括查询等)都以查询参数的形式传递。例如,http://localhost:8080/search?q=@source:iphone.它提取所需的查询参数:
的问参数是强制性的。但是,您也可以使用以下参数进行搜索:
例如:
最后,迭代结果并将其作为JSON(文档数组)传回:
这部分就到这里!
万博体育彩Redis Enterprise是Azure上的一个本地服务,形式是Redis Azure缓存的两个新层由微软和Redis操作和支持。这个服务让开发者可以使用一套丰富的Reag万博下载万博最新版本下载苹果dis企业特性,包括RediSearch这样的模块。万博体育彩有关更多信息,请参阅以下参考资料:
这个端到端应用程序演示了如何使用索引、获取实时数据以创建由reresearch引擎索引的文档(tweet信息),然后使用通用查询语法提取对这些tweet的见解。
想要了解当你搜索一个主题的时候,幕后发生了什么复述,文档?看看这篇博文了解Redis网站如何整合全文搜索与reresearch !或者,也许你对探索感兴趣如何在无服务器的应用程序中使用reresearch?
如果你还在起步阶段,请访问reresearchquick Start页面.
如果你想了解更多关于Redis Azure缓存的企业能力,你可以查看以下资源: