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

文章速览:

  • 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. Istio 入门(三):体验 Istio、微服务部署、可观测性

    本教程已加入 Istio 系列:https://istio.whuanle.cn 目录 3,快速入门 书店微服务 预先准备 details 应用 ratings 应用 reviews v1/v2/v3 ...

  2. 跟着 GPT-4 从0到1学习 Golang 并发机制(一)

    目录 一.前言 二.开聊 2.1 Golang 里的并发机制介绍 2.2 Goroutine 与线程 2.3 Goroutine 与线程的调度开销 2.4 用户态和内核态 2.5 Golang 并发编 ...

  3. 移动端APP组件化架构实践

    前言 对于中大型移动端APP开发来讲,组件化是一种常用的项目架构方式.个人最近几年在工作项目中也一直使用组件化的方式来开发,在这过程中也积累了一些经验和思考.主要是来自在日常开发中使用组件化开发遇到的 ...

  4. Dubbo的高级特性:服务治理篇

    王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 上一篇中,我们已经在Spring Boot应用中集成了Dubbo,并注册了一个服务提供方和一个服务使用方 ...

  5. OO第一次大作业

    前言 前言的前言 这是我的第一篇blog,有点小激动,我还找教程设置了一下我的背景,本来还想弄个页面小宠物,但是看了一下感觉有点复杂,下次一定.如果对我blog的内容有任何修正或者建议可以评论让我知道 ...

  6. Inpaint Anything:一键进行多种图像修补

    本文分享自华为云社区<绘制一切>,作者: 雨落无痕 . 绘制一切-Inpaint Anything 相关链接: Notebook案例地址:绘制一切 AI Gallery:https://d ...

  7. SpringBoot里的Servlet和实现

    Servlet 接口,一个规范, SpringBoot Spring Boot 是 Spring 的子项目,正如其名字,提供 Spring 的引导( Boot )的功能. 通过 Spring Boot ...

  8. 关于Linux下服务器MySQL的安装和搭建

    一.检测是否已经安装Mysql 检测 # yum list installed | grep mysql //检查安装 # yum -y remove mysql-libs.x86_64 //卸载 / ...

  9. @ControllerAdvice 注解使用及原理探究

    最近在新项目的开发过程中,遇到了个问题,需要将一些异常的业务流程返回给前端,需要提供给前端不同的响应码,前端再在次基础上做提示语言的国际化适配.这些异常流程涉及业务层和控制层的各个地方,如果每个地方都 ...

  10. jQuery项目的小技巧

    1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而不需要使用其他插件. // Back to top // Back to top $('a.top').c ...