【51CTO.com快译】我们都遇到过应用程序运行慢腾腾的情况。再优秀的代码也会在高负载下降低性能。缓存是一种快速且相对省钱的方法,可大幅提升性能,并缩短响应时间。
Redis简介
Redis(远程字典服务器)是一种开源的内存中数据存储,最常用作分布式缓存。它提供各种高效的数据结构,旨在可以高速访问您的数据。Redis又叫NoSQL数据库和键/值存储。由于Redis将数据存储在内存中,而不是存储在磁盘上,提供了无与伦比的速度、可靠性和性能。
那么,内存中数据存储又是什么呢?简而言之,它是将整个数据集保存在内存中的数据库。这意味着每当您查询数据库或更新数据库中的数据时,仅访问主内存。因此,这些操作不涉及磁盘。这很棒,因为主内存比任何磁盘都要快得多。
为什么将Redis用作缓存?
缓存的主要目的是,缩短访问存储在应用程序主内存空间之外的数据所需的时间。如果不使用缓存,应用程序针对每个请求与数据源进行交互;如果使用缓存,只需要对外部数据源发出单个请求,随后的访问由缓存来处理。
应用程序依赖外部数据源时,这些数据源的延迟和吞吐量会造成性能瓶颈。提升性能的一种方法是在内存中存储和处理数据,其位置更靠近应用程序。
这时候Redis就能发挥作用。Redis旨在将所有数据存储在内存中,从而在读取或写入数据时提供尽可能高的性能。
Redis的速度极快。它提供亚毫秒级响应时间,每秒可支持数百万个请求,以支持要求苛刻的实时应用程序。
您要做的通常是将经常访问的数据存储在Redis中,那样无论何时请求数据,数据都可以来自缓存而不是您的数据库。然后,只要对您的数据进行更改,就可以使相关缓存无效,那样您可以让缓存保持最新。
Redis缓存的工作原理
假设您有一个基于WordPress的网站。
WordPress页面首次加载时,在服务器上执行数据库查询。Redis会记住或缓存该查询。因此,另一个用户加载WordPress页面时,结果从Redis和内存来提供,无需查询数据库。
对象缓存的工作原理是将加载WordPress页面所需的SQL查询缓存在内存中。当页面加载时,生成的SQL查询结果由Redis从内存来提供,因此查询不必命中数据库。结果是页面加载时间短得多,服务器对数据库资源的影响较小。
图1. Redis的工作原理
访问内存(物理RAM)中的数据比访问硬驱中的数据要快得多。因此很容易注意到,如果应用程序想要访问的数据在主内存中,访问该数据比访问存储在硬驱上的数据容易得多。
如果查询在Redis中不可用,数据库提供结果,Redis将结果添加到缓存中。如果值在数据库中加以更新(比如在WordPress中创建了一个新的帖子或页面),该查询的Redis值将无效,以防止提供错误的缓存数据。
为什么使用Redis?
- 快速响应的数据库:它将数据存储在内存中,而不是存储在磁盘上,因此执行读写操作时,响应时间比其他数据库快。可以与其他数据库一起使用,有助于减轻负载、提升性能,但也可以用作主数据库。
- 数据持久性:Redis使用持久性磁盘存储,旨在遇到进程中断和网络瓶颈后可以存活下来。
- 会话缓存:Redis最明显的使用场景之一是将其用作会话缓存。与其他会话存储相比,使用Redis的优点在于Redis提供了持久性。
- 基于键的访问:Redis基于键值模型,其中数据由Redis通过键来存储和获取。基于键的访问带来了极高效的访问时间,这种模型可自然地映射到缓存。
想了解Redis的更多信息以及相关资源,可以访问说明文档:https://redis.io/。
原文Redis as Cache: How it Works and Why to Use it,作者:Bobby Borisov
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】