amazon-web-services - Redis——它是如何提高性能的?

标签 amazon-web-services redis memcached

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

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

非常感谢!

最佳答案

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

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

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

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

关于amazon-web-services - Redis——它是如何提高性能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49290734/

相关文章:

php - 用于列出 s3 文件夹的 aws sdk php

amazon-web-services - 我可以通过 Amazon API 网关异步启动长时间运行的 AWS Lambda 进程吗?

java - 在 Java 上验证 AWS id token

docker - 是否可以将 redis 容器附加到 docker 卷?

redis - 为什么单个 Redis 实例不是线程安全的?

PHP Memcached 总是返回 0

amazon-web-services - Terraform:如何有条件地将过滤器添加到数据源

time - 如何在 Redis 上获取超过 n 分钟的值?

asp.net - 如何实现Memcached与数据库同步

ruby-on-rails - 如何在 Rails 中缓存任意对象(基于时间)?