确定是否需要使用用于 Redis 的 Azure 缓存
体育网站的背后有一个数据库,它通过执行查询来返回数据。 但是在负载很高,尤其是大型体育赛事期间,网站的速度可能会变慢。 在托管环境中,资源使用量增加会导致成本增加。 高速缓存数据可让网站反应迅速并以经济实惠的方式运行。
什么是缓存?
缓存是一种存储操作,将经常访问的数据存储在非常接近使用此类数据的应用程序的内存中。 可以使用高速缓存来提升性能并降低服务器上的负载。 我们使用 Redis 来创建一个内存中缓存,它可以大幅降低延迟并提高性能。
什么是 Redis 缓存?
Redis(远程字典服务器)缓存是一种开源内存中键值对存储。 它使用广泛,因为可以快速存储和处理常见数据类型,例如字符串、哈希和集。 它支持多种语言(例如 Python、C、C++、C#、Java、JavaScript 等),可供开发人员轻松使用。
什么是用于 Redis 的 Azure 缓存?
用于 Redis 的 Azure 缓存基于流行的开放源代码 Redis 缓存。 它可用于访问 Microsoft 管理的、安全的专用 Redis 缓存。 使用用于 Redis 的 Azure 缓存创建的缓存可从 Azure 内的任何应用程序进行访问。 用于 Redis 的 Azure 缓存通常用于提高极其依赖后端数据存储的系统的性能。
缓存数据位于运行 Redis 缓存的 Azure 服务器的内存中,而不是由数据库从磁盘加载。 缓存还是高度可缩放的。 可随时更改大小和定价层。
什么类型的数据可以存储在缓存中?
Redis 支持各种围绕二进制安全字符串的数据类型。 你可以对值使用任何二进制序列,既可以使用“i-love-rocky-road”这样的字符串,也可以使用图像文件的内容。 空字符串也是有效值。
- 二进制安全字符串(最常见)
- 字符串列表
- 无序的字符串集
- 哈希
- 排序的字符串集
- 字符串映射
每个数据值都与一个键相关联,键可以用来从缓存中查找值。 具有较小值(100 kB 或更小)的 Redis 工作性能最佳,因此请考虑将较大数据分成多个键。 存储更大的值是可能的(最多 500 MB),但会增大网络延迟并且可能导致缓存问题和内存不足问题(如果未将缓存配置为让旧值过期)。
什么是 Redis 键?
Redis 键也是二进制安全字符串。 下面是一些有关如何选件键的指南:
- 避免使用长键:长键占用更多内存,需要更长的查找时间,因为必须一个字节一个字节地进行比较。 若要使用二进制 Blob 作为键,则请生成唯一哈希,将其改用作为键。 键的最大大小为 512 MB,但不应使用如此大的键。
- 使用可以标识数据的键:例如,与
fb:8-2-2
相比,sport:football;date:2008-02-02
是更好的键。 前者的可读性更好,多出来的大小可以忽略不计。 请在大小和可读性之间寻求平衡。 - 使用约定:譬如在
sport:football
中,object:ID
就是比较好的约定。
数据是如何存储在 Redis 缓存中的?
Redis 中的数据存储在节点和群集中。
节点是指 Redis 中存储数据的空间。
群集是指三个或更多节点构成的集,你的数据集跨这些节点进行拆分。 群集非常有用,因为在某个节点故障或无法与群集中的其他成员进行通信时,操作可以继续进行。
什么是 Redis 缓存体系结构?
Redis 缓存体系结构是指数据在缓存中的分布方式。 Redis 以三种主要方式分布数据:
- 单节点
- 多节点
- 群集
Redis 缓存体系结构在 Azure 中按不同层级进行拆分:
基本缓存
基本缓存提供单节点 Redis 缓存。 整个数据集存储在单个节点中。 此层级适合开发、测试和非关键型工作负载。
标准缓存
标准缓存建立的是多节点体系结构。 Redis 将一个缓存复制到双节点主要/辅助配置中。 Azure 管理两个节点之间的复制,并使用主/次要副本创建生产就绪缓存。
高级层
高级层包括标准层的功能,还添加了用于保存数据、创建快照和备份数据的功能。 在此层级中,可以创建 Redis 群集,从而跨多个 Redis 节点进行数据共享,以便增大可用内存。 高级层还支持 Azure 虚拟网络,可完全控制连接、子网、IP 寻址和网络隔离。 该层级还包括异地复制,因此可以确保数据接近使用它的应用。
摘要
数据库很适合存储大量数据,但在查找数据时会存在固有的延迟。 假设发送了一个查询。 服务器需要解释该查询,查找数据,然后返回数据。 服务器还存在处理请求方面的容量限制。 如果发出的请求太多,可能会降低数据检索的速度。 缓存可将频繁请求的数据存储在内存中,使返回数据的速度比查询数据库快,从而降低延迟并提高性能。 使用 Azure Cache for Redis,可以访问安全、专用的可缩放 Redis 缓存,这些缓存托管在 Azure 中并由 Microsoft 管理。