Redis——它是如何提高性能的?

Redis -- how does it improve performance?

我是网络开发领域的新手,最近才了解计算机系统中的内存层次结构。我最近遇到了 Redis,并且很想在一个小型网络应用程序中试用它。但在我这样做之前,我想知道 Redis 将如何提高性能?到目前为止,从我读到的内容来看,Redis 似乎是一个 "in-memory" 数据存储,这是否意味着每当用户从服务器请求数据时,而不是从数据库中获取数据(假设 Redis 数据存储已经填充了所需的数据)可以通过直接从服务器内存访问数据来满足请求吗?具体来说,如果我有一个后端服务器托管在 AWS 上的 Web 应用程序,并且数据库存储在 MLAB 上,那么每当用户请求数据时,而不是查询将请求重定向到 MLAB 的服务器,它现在可以直接从服务器获取数据而不用去 MLAB 了吗?另外,在内存中,这是否意味着数据存储在我的 AWS 服务器的 RAM 中?

最后,这与缓存有何不同?

非常感谢!!

嗯,Redis 被用作缓存,与大多数传统缓存的不同之处在于你有其他不错的结构,如散列、集合、列表、键上的 TTL、hyperlologs 等等,而不仅仅是对 key:value.

你对 Redis 的定义是正确的,但是要考虑到如果你想将你的数据从 MLAB 数据库移动到 Redis 你必须设计一些过程来保持 Redis 在你的数据库中发生的每次更新中更新.因此,来自您的应用程序的每个查询都将使用 Redis 来获取数据,但除此之外,您将需要一个进程来根据数据库的更改来更新 Redis,因此如果您使用您的应用程序来更新数据库(并且没有其他外部部件可以更新您的数据库),每次您从 web-app 获得更新时,您都必须更新数据库和 Redis,或者让 command/script 检测数据库中每次发生更新并正确更新 Redis。

AWS 还提供 Redis 服务,例如 ElasticCache https://aws.amazon.com/elasticache/?nc1=h_ls 所以基本上,您拥有应用程序的 AWS ECS 实例不使用 RAM,但是这个 ElasticCache 服务可以存在于另一台物理机器上。

最后,Redis 将数据存储在内存中,它使用转储文件来保存部分数据以防崩溃,它还提供持久化模式