我对网络开发世界相对较新,并且最近才学习计算机系统中的内存层次结构。我最近遇到了Redis,我很想在一个小型网络应用程序中试用它。但在此之前,我想知道Redis如何提高性能?从我到目前为止所阅读的内容看,Redis似乎是一个记忆中的"数据存储,这意味着每当用户从服务器请求数据时,而不是从数据库中提取数据(假设Redis数据存储已经填充了所需的数据),可以通过直接访问数据来满足请求。服务器的内存?具体来说,如果我有一个Web应用程序,后端服务器托管在AWS上,并且数据库存储在MLAB上,那么每当用户请求数据时,而不是查询将请求重定向到MLAB的服务器,它现在可以直接从服务器获取数据而无需转到MLAB?此外,通过内存,这是否意味着数据存储在我的AWS服务器上的RAM中?
最后,这与缓存有什么不同?
非常感谢!!
答案 0 :(得分:1)
好吧,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将数据存储在内存中,它使用转储文件来保存部分数据,以防崩溃,并且还提供持久模式