用例

快取

什么是Redis应用程序缓存Redis用例

应用程序缓存是基于瞬态数据并针对速度进行了优化的缓存解决方案,与典型的数据库不同,后者从持久性存储设备提供内容,而性能受存储延迟的影响很大,通常,缓存完全由内存提供。关于此Redis用例应用程序缓存避免了在云本机部署中固有的显着额外延迟,在云本机部署中,持久性存储必须通过网络连接到部署数据库的云实例,从而增加了数据库实例与持久性存储之间的往返延迟

内存缓存解决方案是另一个Redis用例,它在减少延迟方面非常有效,特别是在Redis数据集最常访问的工作集适合缓存大小并且数据库访问模式由读取请求驱动的情况下。在面向用户的应用程序中的即时响应企业必须依靠某种Redis缓存机制。此外,在通过API用作其他应用程序的应用程序作为服务的应用程序的情况下,缓存解决方案对于访问经常读取的数据变得极为重要。

Redis用例缓存实验室缓存解决方案

现在,Redis缓存已在许多情况下广泛使用,包括

DBMS数据

大多数传统数据库的设计目的是提供强大的功能,而不是提供大规模的速度。数据库高速缓存通常用于存储查找表的副本以及来自DBMS的昂贵查询的回复,既可以提高应用程序的性能,又可以减少应用程序的负载。数据源

会话数据

使用Redis缓存用户会话数据是构建可伸缩和响应式应用程序必不可少的部分,因为每次用户交互都需要访问会话的数据,因此将数据保留在缓存中可确保对应用程序用户的最快响应时间将会话数据保持在缓存层级别优于其他方法,例如,使会话保持在负载均衡器级别,例如有效地迫使会话中的所有请求由单个应用程序服务器处理,而缓存则允许任何应用程序服务器处理该请求而不会丢失用户,而缓存则是许多情况之一Redis用例

API响应

现代应用程序是使用通过API进行通信的松耦合组件来构建的。应用程序组件使用API​​从其他组件(例如Redis微服务架构内部或SaaS用例外部)向其他组件提出服务请求,例如应用程序本身存储API的回复使用Redis缓存解决方案,即使通过避免这种进程间通信也只是短暂地提高了应用程序的性能

Redis应用程序缓存的挑战和最佳实践

  1. 多种解决方案Redis应用程序缓存有很多选项,但是很多基于利基技术,这些技术不是开源的,也没有广泛使用,因此仅限于特定的平台和编程语言。它们无法涵盖当今的各种部署选项,包括完全托管的云服务在本地部署或混合部署
  2. 管理Redis缓存对象生命周期Redis缓存的数据大部分是瞬态的,并且随着时间的推移会过时。缓存的最大挑战之一是通过有效的过期和逐出策略管理缓存对象的生命周期,需要对对象何时过期或逐出进行粒度控制,以避免不断增加数据集的大小或增加高速缓存未命中的数量,导致数据检索效率低下
  3. 延迟不到毫秒即可扩展到任何吞吐量您的Redis缓存应设计为可即时和线性地扩展到任何可预见的吞吐量,同时在任何负载下都保持亚毫秒级的延迟
  4. 通过即时故障转移时间保持高速缓存的高可用性应用程序的性能取决于缓存层,因此保持缓存层的高可用性对于与客户保持SLA至关重要。因为缓存每秒可能会发生数十万甚至数百万次操作,任何一秒钟的停机时间都可能对性能产生极大影响以及交付SLA的能力
  5. 全球分布随着越来越多的Redis应用程序部署在多个云和区域中,并被移动用户所消耗,以全局分布的方式部署Redis缓存层已成为一项关键要求。管理保证本地子目录的全局分布的缓存系统是一个真正的挑战。毫秒延迟,同时还解决了跨部署站点的数据集冲突

为什么将Redis Enterprise作为缓存解决方案

  1. 开源OSS Redis是当今应用程序缓存的第一选择Redis每天在Dockerhub上支持编程语言和客户端库的下载量超过十亿次,并且已被集成为大多数应用程序部署平台的默认缓存层。由创建和维护开源Redis的同一人围绕OSS Redis设计的。它将企业级功能提供给您的缓存层
  2. Redis是从头开始设计的,具有两项重要的功能来管理缓存的生命周期
    1. 内置数据到期允许您控制对象在数据集中保持活动状态多长时间,同时支持活动和延迟到期机制
    2. 内置驱逐机制允许您确定当缓存达到其内存限制时将驱逐哪个对象
  3. Redis Enterprise可以立即线性地扩展到几乎任何所需的吞吐量,同时将延迟保持在毫秒级以下。Redis Enterprise超过M ops秒仅在标准云环境中运行的节点集群
    缓存实验室
  4. Redis Enterprise包含多种高可用性机制,可确保从故障事件(例如流程故障节点故障区域机架数据中心故障,甚至是区域多数据中心故障事件)中恢复,并具有立即数秒的故障转移时间。此外,如果您将缓存层部署在Redis企业云我们保证五个九的可用性
  5. Redis Enterprise Active Active Geo分发允许您全局部署缓存层,您的应用可以在其中读取或写入每个副本,就好像它是具有亚毫秒级延迟并具有无缝冲突解决机制的缓存一样。解决方案Redis无冲突复制数据类型CRDT基于多年的学术研究,并以明确定义的一致性模型为后盾

如何使用Redis实现缓存

Redis是围绕数据结构的概念设计的,可以跨字符串哈希存储您的数据集,对哈希集进行排序,设置集,列表流和其他数据结构或Redis模块

使用Node js,您可以通过客户端对象的GET和SET命令从简单的字符串中检索并保存键值对,如下所示

将Redis客户端连接到本地实例
const client redis createClient

从Redis检索字符串值(如果该键已经存在)
返回客户端获取myStringKey错误值
如果值
控制台日志与此键关联的值为value

否则找不到密钥
在Redis存储中存储一个简单的字符串
客户端设置myStringKey Redis企业教程

此代码段尝试使用GET命令检索与myStringKey关联的字符串值。如果找不到该键,则SET命令存储myStringKey的Redis Enterprise Tutorial值

可以使用Python编写相同的代码,如下所示

将Redis客户端连接到本地实例
r redis Redis主机localhost端口db

从Redis检索字符串值(如果该键已经存在)
值r获取myStringKey

如果值None键未找到
在Redis存储中存储一个简单的字符串
r设置myStringKey Redis企业教程
其他
打印与此键关联的值为value