简单地说,我们现在是Redis

了解更多

RediSearch在行动

学习如何实时接收tweet,并使用Redis Azure Cache中的RediSearch灵活查询tweet。



回到博客

复述,有一个通用的数据结构集从简单的字符串一直到强大的抽象,比如复述,流.原生数据类型可以带您走很长的路,但是有些用例可能需要解决方法。一个例子是Redis要求使用二级索引,以超越基于键的搜索/查找,以获得更丰富的查询功能。虽然你可以使用排序集、列表等来完成任务,你需要考虑一些权衡因素。

输入RediSearch!可以作为复述,模块由于拥有一流的二级索引引擎,RediSearch提供了灵活的搜索功能。它提供了强大的功能,如全文搜索、自动完成、地理索引等等。

为了展示RediSearch的力量,这篇博客文章提供了一个如何使用RediSearch的实例Redis的Azure缓存在……的帮助下使用RediSearch去客户端.它的设计目的是为您提供一组应用程序,让您能够实时接收tweet,并使用reresearch灵活地查询它们。

具体来说,您将学习如何:

  • 使用reresearch索引
  • 使用不同的reresearch数据类型,如TEXT、NUMERIC、TAG等
  • 如何构建一个应用程序来显示reresearch的能力
  • 如何用几个命令将服务组件部署到Azure
  • 通过查询reresearch分析推文数据

应用程序概述

如前所述,示例服务允许您实时使用tweet,并使它们可以通过reresearchch进行查询。

它有两个组成部分:

  1. 消费者/索引器:从Twitter流API中读取,创建索引,并在到达时不断添加tweet数据(在Redis hash中)。
  2. 搜索服务:一个REST API,允许您使用RediSearch搜索tweet查询语法

在这一点上,我将深入了解如何启动和运行这个解决方案,以便您可以看到它的实际作用。然而,如果你有兴趣了解各个组件是如何工作的,请参阅下面的代码浏览部分和本博客的GitHub repo:https://github.com/abhirockzz/redisearch-tweet-analysis

先决条件

  1. 首先,你需要一个microsoftzure帐户:免费得到一个这里!
  2. 上面列出的服务组件将被部署到Azure容器实例使用本地Docker CLI命令。启用此功能的是Docker与Azure的集成
  3. 您将需要Docker Desktop版本2.3.0.5或更高版本,用于窗户macOS,或安装用于Linux的Docker ACI集成命令行.要使用Twitter流API,您还需要一个Twitter开发人员帐户。如果你还没有,拜托了按照下列指示.RediSearch在行动!

开始使用这个快速入门教程设置一个Redis万博体育彩企业层缓存在Azure上。一旦你完成了设置,确保你有Redis主机名和访问键方便:

我们服务的两个组件都可以作为Docker容器使用推特索引服务搜索API服务.(如果你需要构建自己的Docker映像,请使用GitHub repo上相应的Dockerfile。)

现在您将看到将这些部署到是多么方便Azure容器实例,它允许您在托管的、无服务器的Azure环境中按需运行Docker容器。

部署到Azure

一个docker-compose.yml文件定义各个组件(tweets-searchtweets-indexer).你所需要做的就是更新它来替换你的Azure Redis实例的值以及你的Twitter开发者帐户凭证。这是它的文件全部

创建Azure上下文

克隆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.它提取所需的查询参数:

参数是强制性的。但是,您也可以使用以下参数进行搜索:

  • 字段:指定要在结果中返回哪些属性,
  • offset_limit:如果你想指定从你想要搜索的地方的偏移量和你想要在结果中包含的文档数量(默认情况下,偏移量是0,限制是10——根据reresearchgo客户端)。

例如:

最后,迭代结果并将其作为JSON(文档数组)传回:

这部分就到这里!

万博体育彩Redis在Azure缓存上的企业层

万博体育彩Redis Enterprise是Azure上的一个本地服务,形式是Redis Azure缓存的两个新层由微软和Redis操作和支持。这个服务让开发者可以使用一套丰富的Reag万博下载万博最新版本下载苹果dis企业特性,包括RediSearch这样的模块。万博体育彩有关更多信息,请参阅以下参考资料:

结论

这个端到端应用程序演示了如何使用索引、获取实时数据以创建由reresearch引擎索引的文档(tweet信息),然后使用通用查询语法提取对这些tweet的见解。

想要了解当你搜索一个主题的时候,幕后发生了什么复述,文档看看这篇博文了解Redis网站如何整合全文搜索与reresearch !或者,也许你对探索感兴趣如何在无服务器的应用程序中使用reresearch

如果你还在起步阶段,请访问reresearchquick Start页面

如果你想了解更多关于Redis Azure缓存的企业能力,你可以查看以下资源:

Baidu