通过更快的运营,您的整个业务将产生更多的收入和更少的摩擦。 对于您在公司中使用的每个应用程序,改进搜索结果或数据库查询的响应时间会影响您的所有服务:销售和业务开发、人力资源、客户关系、生产或设计。
在本文中,我们将向您介绍Redis并展示我们是如何使用它来提高应用程序的 API 性能,同时我们也创建了一个演示来试用。
Redis介绍
Redis是一个内存数据库。 它依赖于计算机的内存(RAM)而不是硬盘,这提供了比物理驱动器更快的响应时间,因为从内存中读取数据的速度更快。Redis是一种内存数据存储,用于以亚毫秒级延迟获取、处理和分析实时数据。Redis是搜索、广告定位、个性化、物联网等的理想选择。 它与编程语言无关; 你可以使用任何你擅长的编程语言。
当您的系统具有大型数据集时,Redis对性能提升的结果是显而易见的。 在当使用它的用户越来越多,导致请求或响应越来越多的数据的时候它有利于应用程序的可扩展性。 这也是一种缓存复杂、耗时的数据库查询结果以避免数据库瓶颈并更快地检索它以供将来请求的方法。
谁在使用Redis?
Redis的官方网站称,Redis被许多大公司使用和信任。 许多著名公的司将Redis用于生产环境,例如 Instagram、Github、Airbnb、Twitter 和 Stackoverflow。
Redis于2009 年推出,多年来,它已经在项目或者公司中广泛的证明了自己是一种快速、可信、可靠和高效的解决方案。 这就是为什么你也应该尝试一下!
使用案例
如上所述,我们可以将Redis解决方案巧妙地实施到多种用例中,这要归功于其多种数据结构,可以满足您的应用程序需求。
Redis 可以缓存数据、构建聊天和消息传递、维护队列、创建实时排行榜、存储会话、流式富媒体、缓存地理空间以及提供机器学习和实时分析。
Talentiva演示
在这,我们创建了一个演示来展示 Redis 缓存功能,我们用它来改进我们的 API 响应。
*联系我们试用我们的演示。
这是Talentiva,一个人才数据库,其中包含许多用于职业搜索的个人资料。 我们添加了出生国家、当前所在国家、技能和语言等个人资料属性以增加复杂性。 用户可以根据他们的要求搜索不同的标准以获得不同的结果。
我们使用以下方法实现了它:
- NextJS(服务器渲染的 React 框架),
- ExpressJS(定义和维护业务逻辑,然后提供 API),
- MongoDB(存储所有数据的数据库)。
没有使用Redis的流程如下所示:
user: 用户
NextJS with ExpressJS Custom Server: NextJS和ExpressJS自定义服务器
MongoDB: MongoDB
- 请求条件: Male, Residence in China, works in IT industry
- 按条件查找相关数据
- MongoDB聚合操作处理查询
- 返回计算的结果
- 将结果显示给用户
- 用户使用搜索页面上的搜索字段向服务器发送请求;
- 后端应用取数据库上查询的提交条件;
- MongoDB 聚合操作将处理具有多个文档或集合的查询并返回计算结果;
- 服务器将结果发送回客户端。
问题是客户端每次都发送请求都会从数据库中直接查询数据。
如果不同的用户多次发送相同的请求,数据库必须处理和响应相同的数据。 这将不会是一个具有成本效益的解决方案。 如果你的数据集很大,这个过程将会变得的缓慢!
Redis解决方案
现在是时候使用Redis缓存来改进流程了。 我们已经安装了一个Redis实例,然后在服务端上布置了一个函数来判断当前查询之前是否请求过以及响应的数据是否已经在Redis缓存中。
user: 用户
NextJS with ExpressJS Custom Server: NextJS和ExpressJS自定义服务器
MongoDB: MongoDB
Redis Cache: Redis缓存
- 请求条件: Male, Residence in China, works in IT industry
- 检查数据是否已经在Redis中
- 是的!匹配到缓存。我们通过从缓存缓存中获取数据节省了大量时间:)
- 将结果显示给用户
假设数据在 Redis 缓存中。 直接向客户端响应数据可以节省时间,因为从Redis上获取数据需要的时间要少得多。
user: 用户
NextJS with ExpressJS Custom Server: NextJS和ExpressJS自定义服务器
MongoDB: MongoDB
Redis Cache: Redis缓存
- 请求条件: Male, Residence in China, works in IT industry
- 检查数据是否已经在Redis中
- 没有匹配到缓存。数据不在缓存中,我们需要从数据库中获取它
- 按条件查找相关数据
- MongoDB聚合操作处理查询
- 返回计算的结果
- 将结果持久化到redis缓存
- 将结果显示给用户
假设数据不在 Redis 缓存中。先从数据库中查询,将结果保存在 Redis 缓存中,并响应给客户端。
您可以从我们的演示中看到,如果您使用相同的条件进行搜索。 在第二次时,Redis实现了更短的响应时间。
Response from Database: 从数据库响应
Response from Redis Cache: 从Redis缓存中响应
SEARCH: 搜索
RESPONSE TIME: 响应时间
从上图和图表中可以清楚地看到,Redis Cache 的响应比数据库的响应快得多。
问答
问题: 我是否需要更改我的服务器基础架构才能完全使用此服务?
答: 不,您不需要更改服务器基础架构。 您可以将它与您当前的服务器和您的 web/app 一起使用。
问题: Redis比Memcached好吗?
答: Memcached是为简单而设计的,而Redis可以提供更广泛的功能。 可以说Redis比Memcached强大得多。 这就是我们推荐 Redis 的原因。
问题: 在我的应用程序上部署Redis需要多长时间?
答: 这取决于您的网络/应用程序,如果您想获得更个性化的答案,请联系我们。
结论
Redis可以缓存数据以避免在未修改的数据集/结果中对数据库运行相同的查询。此解决方案将节省不必要的数据库请求。此外,Redis缓存并不是Redis提高应用程序性能的唯一解决方案。根据您想要解决的问题,Redis可以提供许多解决方案。
此外,当我们想要保持数据库和Redis缓存之间的一致性时,事情会变得更加复杂。Redis部署可能具有挑战性,例如更新数据集时失效,或者如果部署不正确会出现问题。因此,某些领域需要有相关经验和知识的专家才能从事。
我们知道"没有能解决所有问题的单一方案"。软件开发也是如此。如果您有业务问题/想法,并且希望使用技术来解决/实现它。欢迎您随时咨询 QPS。我们是一家经验丰富的数字解决方案机构,在该行业拥有 15 年以上的经验。不要犹豫,告诉我们您的项目,向我们咨询您的问题,或索取报价——这个是免费的!