当前位置:首页|资讯

企业如何使用 Redis | Redis是什么?你真的了解 Redis 吗?Redis 数据结构简介

作者:优阅达发布时间:2024-09-05

什么是 Redis 呢?它为什么会被广泛使用并成为通用的首选数据库呢?


自十多年前产品问世以来,Redis 已成为全球流行的数据库之一。日常生活中,当我们访问电子商务或游戏平台时,这些应用程序的幕后完全有可能在使用 Redis 。那么,什么是 Redis 呢?它为什么会被广泛使用并成为通用的首选数据库呢?


实际上,可能很多人听说过 Redis,或许还初步使用过它。但是,你真的了解 Redis 吗?它可能远比你知道的更加强大和实用。

来吧,让我们一起系统的认识 Redis !


Redis 是什么


Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。它支持字符串、散列、列表、集合、排序集合等数据结构,支持范围查询、位图、超日志和具有半径查询的地理空间索引。


- 数据库:数据库是经过组织的信息的集合,以便于访问、管理和更新。

- 缓存:在计算中,缓存是一个存储数据的组件,以便将来对该数据的请求可以更快地得到服务;存储在缓存中的数据可能是先前计算的结果,也可能是存储在其他地方的数据的副本。

- 消息代理:消息代理是一个中间程序模块,它将消息从发送方的正式消息传递协议转换为接收方的正式消息传递协议。


Redis 通常是作为缓存开始的,就是当主数据存储是基于 SQL 或 NoSQL 的磁盘数据库时,存储以前查询的结果或临时计算结果的地方。Redis 与普通缓存的区别在于:它可以将数据持久保存到磁盘,并且由于内存复制和自动故障转移而具有高可用性。

因此,许多客户使用它来存储未存储在其他任何地方的高速数据。例如:企业将 Redis 被用作需要快速处理的数据的主数据库,或者将 Redis 用作面向用户的数据库,实时为客户服务,而辅助数据库(通常较慢)用于记录事务历史。

- Use Case -

一家提供 Apple Pay 服务的大型银行使用 Redis 来存储 Apple Pay 交易过程中的参数。这些参数在每次会话中提供,存储在 Redis 中,并且在每次极高速的会话中不断被访问,它们不会存储在其他地方。这代表了 Redis 作为数据库的使用。

Redis 还被用作消息代理,其中发布的消息被表征为通道。订阅者只接收他们表示感兴趣的消息。这种方式使用 Redis 的原因通常是:除了作为一个消息代理之外,Redis 还提供了支持用例的数据结构(特别是列表数据结构)和通知机制(即发布、订阅),并提供了性能提升。

Redis 的多用途特性使它比其他内存中的简单键值存储功能强大得多,但这还不是使 Redis 独一无二的唯一特性。

Redis 的数据结构

Redis 多功能性的核心是其众多的数据结构。Redis 的每种数据类型都像乐高积木一样,旨在协同工作,以便开发人员能够以最小的延迟、编码和网络开销执行复杂的操作。Redis 的数据结构使 Redis 有别于其竞争对手,并且它们针对特定应用场景和功能进行了优化。例如,客户可以使用 Redis 进行从实时事务分析到时间序列数据分析的所有操作。

Redis 数据结构包括:

字符串

字符串是在许多键值存储中发现的最基本的数据结构。Redis 允许对数据进行直接操作,如增加数值和操作字符串范围,以一种高效和原子的方式。

散列

散列(又名映射、字典和关联数组)是基本数据结构,本质上是字段值对的集合。从某种意义上说,每个 Hash 都是 Redis 内部的一个迷你 Redis,这就是 Redis 开始脱离其他 K/V 存储以及其他 nosql 的地方。散列允许对集合中的单个值进行快速访问和操作,并提供 15 个内置操作。Hash 是一种非常灵活的数据结构,可用于为各种结构化数据需求建模,例如用户会话和配置文件、JSON 文档,甚至是关系表格式数据。

列表

Redis 的列表是由字符串元素组成的,这些字符串元素相互链接,就像链条上的链接一样。列表为添加和删除元素(即使有数百万项)提供了快速的恒定访问时间,并保留了它们的内部顺序。队列是列表的一个流行用例,在队列中,表示作业或消息的新元素被添加(推送)到列表的一端,现有元素从同一端或另一端删除(弹出)。多个阻塞命令(例如:' wait until timeout或until something push to queue ')允许轻松促进异步、产品-消费者模式。

集合

集合是唯一字符串的无序集合。Redis 除了可以对 set 进行元素的添加和删除之外,还可以对 set 进行所有类型的操作,即:相交、差异和并。这使得 set 对于重复数据删除、表示数据实体的属性和回答关于(其中元素的)成员关系的问题特别有用。set 的用途包括推荐、识别相似的物品、寻找共同的购物、兴趣或朋友。

有序集

有序集,顾名思义是按分数对其成员排序。通过分数范围检索成员对于排序集操作来说是微不足道的,并且使它们自然适合于时间序列数据,实时投标管理,按订单数量购买,最多观看的文章,最高分数等。排序集内置在 Redis 中,具有提供高性能排序的机制。Redis 排序集也可以用作搜索引擎的构建块。

地理空间索引

这是一种特殊形式的排序集,其中每个成员的分数编码一个地理坐标。Redis 的超快数据结构非常适合在一个区域内执行搜索,比如导航和基于位置的服务。

位数组和字段

位数组和字段提供了一组非常独特的操作,当客户有数百万个东西要统计,但又想要限制内存消耗时,这些操作非常有用(想想用同样多的位跟踪数十万用户的在线状态),并且使用 BITCOUNT 这样的操作来报告在任何给定时间有多少用户在线。在物联网场景中,有数百万个数据点和数千个要计数的东西,位数组是实现此类计数器的极具内存效率的方式。

HyperLogLog

HyperLogLog 是一种概率数据结构,用于估计唯一事物的数量。这种数据结构以准确性为代价,极大地节省了内存和处理能力。

这些数据结构针对特定的应用场景和功能进行了优化,Redis 在执行效率和性能方面是无与伦比的,无论是 SQL、NoSQL、内存还是基于磁盘的数据库。

Redis 数据结构深受用户好评:

“到目前为止,Redis 提供的强大数据结构是我最喜欢的功能。它可以用作一个简单的键/值存储,就像你用 Memcached 做的那样,但也允许你创建 Hash 表来模拟更多类似蒙古的功能,以及列表和排序集,可以用于队列,聊天系统和排行榜(基本上任何你想要排序的东西)。此外,刷新磁盘和持久化的选项也非常棒!”


“我用 Redis 做了很多事情,特别是聊天系统和追踪网站活动的排行榜。我也经常在 MySQL 前面使用 Redis 作为更直接的索引,在查询性能不佳和表太大( 5000万+行)的情况下,试图重新索引意味着一大块停机时间。我也使用 Redis 用户会话。我也开始从 Memcached 迁移到 MySQL 前面的基本键/值存储。”

对于更复杂的操作,Redis 支持 Lua 脚本,允许复杂的计算,精细的查询等等。与其他键/值存储相比,Redis 的数据结构、持久性、高可用性和可扩展性要强大得多。

当你将 Redis 与其他 nosql 进行比较时,例如,MongoDB 的文档数据模型,它对 JSON 文档的表示类似于 Redis 中的 Hash 结构。

具有宽列数据存储的 Cassandra 也可以被认为是排序集/散列数据结构的特殊情况,显著的区别在于:对这些数据模型的操作不是在内存中执行的,也不是在数据库中执行的,并且会带来显著的性能损失。

企业如何使用 Redis

下面,我们用一些客户案例来展示:如何在操作和分析中将 Redis 用作数据库、缓存和消息代理。

● 操作和分析数据库

Redis 最常见的用例之一是会话存储。Cooladata 是一个基于事件管理的云数据仓库,可以跟踪热门网站上数十万用户的用户事件。这个事件流消防水带需要太多基于磁盘的 SQL 或 NoSQL 数据库实例来处理更新和插入。Redis 用于对这些数据进行会话化,并生成用户会话的实时分析。然后将会话摘要存储在 MongoDB 中进行历史记录,并将其存储在 HDFS 中进行批量分析。在这种情况下,Redis 是主要的第一响应数据库和实时分析提供商。

● 交易、分析和消息传递

市场数据云提供商 Xignite 使用 Redis提供对市场数据的快速访问,为复杂的计算提供动力,并提供发布/订阅接口。

● 时间序列数据分析和交付

一个期权交易平台即服务提供商使用 Redis 以极高的速度交付快速变化的价格/货币对(数百个价格/货币对,每个价格/货币对每秒变化 10 次,以 1ms 的延迟交付给数百个订户系统)。Redis 构成了这次更新和交付的高可用性和可扩展性的骨干。另外,作为现代零售购物体验的先驱,斯坦斯使用 Redis 作为其库存通知提供商,以亚毫秒的延迟向数千个请求客户提供库存通知。

● 运营数据库

一家大型电信提供商使用 Redis 作为其主要的 NoSQL 数据库来支持其 CDR /账单应用程序,该应用程序每秒需要超过 500 万次操作,延迟时间为 5 毫秒。内容交付和广告平台提供商使用 Redis 向其订阅者网络实时显示内容。Redis 被用作快速决策引擎,根据订阅者的人口统计显示内容。

● 报告和分析:

一家医疗保健学习管理提供商使用 Redis 进行报告和分析,通过使用 Hash 和排序集,他们能够在分析场景中实现亚秒级的用户响应排序,以及低于 5 毫秒的分页时间。

目前,全世界有成千上万的 Redis 用户,几乎有无限的 Redis 用例。上面的用例只是提供了 Redis 行业客户的一瞥,持续关注公众号,后续我们还会将分享更多客户故事~

更好的选择:Redis

显而易见,Redis 是一个数据库,一个缓存,也是一个消息代理。趋势表明,世界需要越来越快地处理其数据,而 Redis 在这方面是无与伦比的。

随着商业世界越来越多地要求其分析与操作一样快,内存处理、存储和分析关键数据将成为 Redis 的巨大竞争优势。

从成本的角度来看,内存技术已经在转变,如何帮助企业降本增效已成为趋势。Redis 企业软件是一个自我管理的数据平台,部署和运行实时应用程序,数据完全可控。

相较于高昂的技术成本,用户直接使用 Redis 企业软件,更具有性价比,且可以充分发挥 Redis 的潜力:令人惊喜的速度,满足企业需求的合规性、可靠性和无与伦比的弹性。





Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1