我们都知道,用户在使用应用程序时候,对于速度有着越来越高的要求,真可谓是“一秒也等不及”。而开发团队又该怎样来满足这种对于实时性的期望呢?

文章速览:

  • Redis Enterprise实时搜索的应用场景
  • 利用索引为开发人员带来更好的体验
  • Redis Enterprise实时搜索的优势
  • 低延迟搜索的3种常见应用案例

现代应用程序的构建中,开发者和架构师更青睐于实时搜索,其能提供用户满意的性能。Redis Enterprise通过对各类查询如全文搜索、复杂过滤表达式、辅助键查找、数字或地理范围查找、聚合函数和搜索结果排序等建立指标以快速提供实时的结果。网络安全、欺诈检测、金融服务、电子商务、游戏和许多其他领域应用程序的构建都依赖Redis Enterprise来实现规模化的即时搜索结果。

一、Redis Enrerprise实时搜索如何解决应用程序常见的挑战

1.挑战:网络延迟,通常是实时搜索应用程序所面临的主要挑战,尤其是当数据需要远距离传输时。

解决方案:Redis Enterprise可以在云端和本地部署运行,提供数据本地化的能力,以确保在全球范围内都能提供低延迟的搜索结果

2.挑战:要做到快速搜索,需要具备快速读取索引数据的能力。传统的基于磁盘的数据库,无法实现快速读取海量数据,无法在能保持延迟低于毫秒级的同时,还能将其扩展到支持每秒数百万次写入的速度。

解决方案:RedisEnterprise基于内存方式运行,具有快速的读取性能和可扩展性

3.挑战:现代的软件应用程序通常需要实时、且立即可使用的即时数据。缓慢的搜索引擎会迫使开发人员在使用数据之前进行预计算、预聚合或预操作等繁琐的过程。经过一系列繁琐的处理后,数据会失去其即时性,变为过时数据,失去准确性和可信度。过时的数据会使运营或实时分析失效。

解决方案:Redis可以在亚毫秒级的时间内返回搜索结果,保证数据的新鲜度,助力应用程序获得更准确的结果。

4.挑战:数据的并发能力允许多个用户对单个数据库在同一时刻进行读写操作。业务上,一些常见的分析用例要求每秒1,000多个查询(QPS)的性能。另一方面,为了避免影响用户的体验,对于开发者而言,应用程序开发的指标之一就在于为终端用户提供低于200毫秒延迟的服务。

解决方案:这些对并发性能的实际需求,基于磁盘的搜索引擎则无法提供足够的并发性能,而这正是Redis Enterprise内存数据库支持实时搜索的极佳用例。Redis Enterprise作为内存数据库能支持跨多个数据库分片,同时在低延迟响应的前提下,提供数据库的搜索和查询规模拓展能力,进而提供数据库的高并发性和数据保护支持。

二、Redis索引为开发人员带来更好的体验

Redis二级索引允许开发人员对任何字段创建索引,创建符合业务需要的数据视图,提供更准确的搜索结果。无需额外修改应用程序代码,二级索引还可以轻松创建并管理复杂的多字段查询。只要Redis索引被创建,就能保持对插入和修改数据的自动更新,不需要手动介入。

  • Sorted Sets无需额外的管理或分配,便能提供快速的查询支持。
  • 不需要修改应用程序代码,即可创建并使用Redis Enterprise数据库的二级索引。
  • 全局自动索引功能确保索引的数据保持最新。
  • 自动维护索引,并允许您在集群数据库中跨数据结构对辅助键进行查询。
  • 不仅是键本身,还为值提供多种索引策略,包括全文搜索、地理位置索引、数字,或是标签索引等。

三、Redis Enterprise搜索的优势

1.提升客户体验:及时且准确的搜索结果,可以保持客户的参与和忠诚。实时搜索、自动建议和分面搜索等强大的搜索特性,帮助用户快速找到他们所需的内容。

2.更精准的业务智能:为了优化流程和服务,Redis能够为实时分析提供即时的搜索结果。此外,Redis还能够在高读取和高写入的场景中,保持高性能地处理常量数据和可变数据。

3.更低的成本:借助使用内存数据库技术和内置搜索引擎,能够以更少的基础设施花费来实现更多功能。

4.支持微服务架构:Redis Enterprise低延迟的搜索结果还支持微服务架构。Redis Enterprise会避免产生任何额外的延迟,进而避免任何会对用户体验不利的影响。

5.可拓展性支持:Redis Enterprise支持线性扩展数据摄入,将数据库索引分布到不同分片和地理位置,以支持实时搜索数千万个键的用户。

6.地理分布式部署:Redis多活地理分布式部署是一种数据弹性架构,其可以在多个数据中心分布存储数据库信息,这些信息存储在各自的独立的,并且不位于同一个地区的集群和节点上。无论复制区域的数量和区域之间的距离如何,多活地理分布式部署都能确保面向本地提供低延迟的读写操作。

四、低延迟搜索的应用案例

有三种常见的应用用例必须使用低延迟搜索:实时分析主数据表查找360度客户视图

1.实时分析

传统数据库对于实时分析和业务智能而言,其提供数据的速度太慢了。尤其当数据不断变化时,传统数据库的查询显得过于缓慢且无法扩展。为了进行准确的实时分析,需要数据库提供一致且高性能的搜索体验。Redis Enterprise可以作为内存数据平台,可以将孤立的源数据库整合,并根据这些源数据库提供实时的指标,以回答诸如“过去10分钟内最畅销的产品是什么?”的实时分析问题。

2.主数据表查找

许多应用程序,例如电子商务应用程序,需要对主数据表进行重复且高速的查找。例如,产品主数据表可能包含每个产品的ID、产品名称、描述和价格。当用户购物时,他们同时访问产品主数据表,计算其购物车的价值。随着表格的增长,搜索过程往往会变得缓慢,客户体验将受到影响。Redis Enterprise通过扩展实时搜索能力,以轻松消除这些常见的应用程序瓶颈。Redis Enterprise支持存储数千万个唯一标识符,并通过直观且快速的自动建议和全文搜索功能提升客户体验。

3.360度客户全景图

提供实时客户服务是一项颇具挑战性的任务。在等待使用客户服务时,请求经常会处于等待的过程中。客户服务团队和360度客户视图应用程序需要实时获取有关客户的信息。Redis Enterprise提供亚毫秒级的客户查询,将在线应用程序扩展到数千万用户。通过强大的聚合、过滤、分组和排序等命令,实时创建新的客户观察和摘要视图。

【虹科干货】谈谈Redis Enterprise实时搜索的过人之处的更多相关文章

  1. 谈谈Redis的SETNX

    谈谈Redis的SETNX 发表于2015-09-14 在 Redis 里,所谓 SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果,不 ...

  2. Lucene.net 实现近实时搜索(NRT)和增量索引

    Lucene做站内搜索的时候经常会遇到实时搜索的应用场景,比如用户搜索的功能.实现实时搜索,最普通的做法是,添加新的document之后,调用 IndexWriter 的 Commit 方法把内存中的 ...

  3. Lucene系列-近实时搜索(1)

    近实时搜索(near-real-time)可以搜索IndexWriter还未commit的内容,介于immediate和eventual之间,在数据比较大.更新较频繁的情况下使用.本文主要来介绍下如何 ...

  4. Solr -- 实时搜索

    在solr中,实时搜索有3种方案 ①soft commit,这其实是近实时搜索,不能完全实时. ②RealTimeGet,这是实时,但只支持根据文档ID的查询. ③和第一种类似,只是触发softcom ...

  5. Everything文件名实时搜索||解决局域网文件共享问题

    内容概要:Everything中文版下载地址及使用.用Everything轻松解决局域网文件共享问题.Everything语言设置问题 另:Everything只支持NTFS格式的磁盘(工作原理的缘故 ...

  6. jmeter 实时搜索结果

    因为JMeter 2.13你可以得到实时搜索结果发送到后端通过 后端侦听器 使用潜在的任何后端(JDBC.JMS网络服务,€Š) 通过提供一个实现类 AbstractBackendListenerCl ...

  7. Elasticsearch是一个分布式可扩展的实时搜索和分析引擎,elasticsearch安装配置及中文分词

    http://fuxiaopang.gitbooks.io/learnelasticsearch/content/  (中文) 在Elasticsearch中,文档术语一种类型(type),各种各样的 ...

  8. lucene4.5近实时搜索

    近实时搜索就是他能打开一个IndexWriter快速搜索索引变更的内容,而不必关闭writer,或者向writer提交,这个功能是在2.9版本以后引入的,在以前没有这个功能时,必须调用writer的c ...

  9. 关于lucene的IndexSearcher单实例,对于索引的实时搜索

    Lucene版本:3.0 一般情况下,lucene的IndexSearcher都要写成单实例,因为每次创建IndexSearcher对象的时候,它都需要把索引文件加载进来,如果访问量比较大,而索引也比 ...

  10. 【Lucene】近实时搜索

    近实时搜索:可以使用一个打开的IndexWriter快速搜索索引的变更内容,而不必首先关闭writer,或者向该writer提交:这是2.9版本之后推出的新功能. 代码示例(本例参考<Lucen ...

随机推荐

  1. 国内可用的GPT4镜像站

    我做了个镜像站,GPT4的费用目前太贵了. 虽然做了个低价的月费,但基本上亏本在做,接口的实际费用高出太多. 运行了1个月,每天有几十人在用吧. 有兴趣的可以收藏一下 GPT4的验明正身的问题&quo ...

  2. 揭秘 .NET 中的 TimerQueue(上)

    前言 TimerQueue 是.NET中实现定时任务的核心组件,它是一个定时任务的管理器,负责存储和调度定时任务.它被用于实现很多 .NET 中的定时任务,比如 System.Threading.Ti ...

  3. 飞桨paddlespeech语音唤醒推理C定点实现

    前面的文章(飞桨paddlespeech语音唤醒推理C浮点实现)讲了飞桨paddlespeech语音唤醒推理的C浮点实现.但是嵌入式设备通常CPU频率低和memory小,在嵌入式设备上要想流畅的运行语 ...

  4. MIT 6.5840 Raft Implementation(2A, Leader Election)

    Raft实现思路+细节 2A 任务分解 总体来说,2A中主要的任务就是选出领导人,在选出领导人的时候,我们要遵循下图. 在2A中,由于并没有出现日志复制,所以我们只需要考察两者的任期是否相等,以及接收 ...

  5. 进程相关API

    ID与句柄 如果我们成功创建一个进程,CreateProcess函数会给我们返回一个结构体,包括四个数 据:进程编号(ID).进程句柄.线程编号(ID).线程句柄. 进程ID其实我们早见过了,通常我们 ...

  6. Vue错误:Cannot read properties of undefined (reading '$router')

    解决方案 这是由于this的指向有问题,我们只需要重新声明一下this就可以重新调用了

  7. Print, printf, println的区别

    print 非格式,打印变量的值,不换行 printf 支持格式化输出,不换行 println 非格式,打印变量的值 ,换行

  8. AcWing 4799. 最远距离题解

    请看: 我们规定,如果一个无向连通图满足去掉其中的任意一条边都会使得该图变得不连通,则称该图为有效无向连通图. 去掉一条边就不连通了,这不就是树吗? (否则如果是图(就是不是树的图)的话,一定有环,拆 ...

  9. [nginx]反向代理grpc

    前言 nginx从1.13.10版本开始提供对gRPC代理的支持.由于grpc基于http2,因此编译nginx时需要添加参数--with-http_v2_module来启用对http2协议的支持. ...

  10. [docker]安装常见数据库

    前言 本文使用docker安装常见数据库大部分没配置什么参数,只是基本的安装. 不只是数据库,还有elasticsearch.rabbitmq等和数据相关的服务. docker 版本: 18.06.3 ...