📜  AWS Elasticache

📅  最后修改于: 2020-11-07 03:18:15             🧑  作者: Mango

什么是Elasticache?

  • Elasticache是用于在云中部署,操作和扩展内存中缓存的Web服务。
  • 通过允许您从快速的托管内存缓存中检索信息,而不是完全依赖于速度较慢的基于磁盘的数据库,它可以提高Web应用程序的性能。
  • 例如,如果您正在运行在线业务,则客户会不断询问特定产品的信息。您可以使用Elasticache缓存数据,而不必去前端并总是询问产品信息。
  • 它用于改善许多读取繁重的应用程序工作负载(例如社交网络,游戏,媒体共享和Q&A门户)的延迟和吞吐量,或用于计算密集型工作负载(例如推荐引擎)。
  • 缓存通过将关键数据存储在内存中以实现低延迟访问,从而提高了应用程序性能。
  • 缓存的信息可能包括I / O密集型数据库查询的结果或计算密集型计算的结果。

弹性疼痛的类型

Elasticache有两种类型:

记忆快取

  • Amazon Elasticache for Memcached是与Memcached兼容的内存中键值存储服务,将用作缓存。
  • 它是一种易于使用的高性能内存数据存储。
  • 它可以用作缓存或会话存储。
  • 它主要用于Web,移动应用程序,游戏,广告技术和电子商务等实时应用程序。

Memcached的工作

  • 数据库用于将数据存储在磁盘或SSD上,而Memcached通过消除访问磁盘的需要将其数据保留在内存中。
  • Memcached使用了内存中的键值存储服务,该服务避免了查找时间延迟,并可以在几微秒内访问数据。
  • 它是一种分布式服务,意味着可以通过添加新节点来扩展它。
  • 它是一个多线程服务,意味着可以扩展其计算能力。因此,Memcached的速度,可伸缩性,简单的设计,高效的内存管理以及对大多数流行语言的API支持,使Memcached成为缓存用例的流行选择。

Memcached的好处

  • 亚毫秒级的响应时间

因为,Memcached将数据存储在服务器的主内存中,而内存中的存储则不必进入磁盘以获取数据。因此,它具有更快的响应时间,并且每秒支持数百万次操作。

  • 简单

Memcached的设计非常简单,使其功能强大且易于在应用程序开发中使用。它支持多种语言,例如Java,Ruby, Python,C,C++等。

  • 可扩展性

Memcached的体系结构是分布式和多线程的,易于扩展。您可以在多个节点之间拆分数据,从而可以通过添加新节点来扩展容量。它是多线程的,意味着您可以扩展计算能力。

  • 社区

社区是一个充满活力的社区支持的开源。 WordPress和Django等应用程序使用Memcached来提高性能。

以下是Memcached的用例

  • 快取

它实现了高性能的内存中缓存,可减少数据访问延迟,增加延迟并减轻后端系统的负载。它可以在不到一毫秒的时间内提供缓存的项目,还使您能够轻松而经济高效地扩展较高的负载。

  • 会话存储

应用程序开发人员通常使用它来存储和管理基于Internet的应用程序的会话数据。它提供了毫秒级的延迟,并且还可以缩放管理会话状态(例如用户配置文件,凭据和会话状态)所需的大小。

雷迪斯

  • Redis代表远程词典服务器
  • 它是一种快速,开放源代码和内存中键值数据存储。
  • 它的响应时间以毫秒为单位,并且每秒为实时应用(例如游戏,AdTech,金融服务,医疗保健和物联网)处理数百万个请求。
  • 它用于缓存,会话管理,游戏,排行榜,实时分析,地理空间等。

Redis的工作

  • Redis将其数据保留在内存中,而不是将数据存储在磁盘或SSD中。因此,它消除了从磁盘访问数据的需要。
  • 它避免了寻道时间延迟,并且可以在几微秒内访问数据。
  • 它是一种开放源代码的内存中键值数据存储,支持诸如排序集和列表之类的数据结构。

Redis的好处

  • 内存中数据存储
    • Redis将数据存储在内存中,而PostgreSQL,MongoDB等数据库则将数据存储在磁盘中。
    • 它不将数据存储在磁盘中。因此,它具有更快的响应时间。
    • 读写操作花费的时间不到一毫秒,每秒支持数百万个请求。
  • 灵活的数据结构
    • 它支持各种数据结构以满足您的应用程序需求。以下是Redis支持的数据结构:
Data type Description
Strings It is a text with up to 512MB in size.
Lists It is a collection of strings.
Sets It is an unordered collection of strings with the ability to intersect, union.
Sorted sets The sets which are ordered by value.
Hashes It is a data structure used for storing the fields and its associated values.
Bitmaps It is a data type that provides bit-level operations.
HyperLogLogs It is a probabilistic data structure used to estimate the unique items in a data set.
  • 简单
    • 它使您可以编写更少的代码行来存储,访问和使用应用程序中的数据。
    • 例如,如果应用程序的数据存储在Hashmap中,并且您想存储在数据存储中,则可以使用Redis哈希数据结构存储数据。如果存储的数据没有任何哈希数据结构,则需要编写许多行代码以将一种格式转换为另一种格式。
  • 复制和持久性
    • 它提供了一个主副本体系结构,其中数据被复制到多个服务器。
    • 当任何服务器出现故障时,它可以提高读取性能并加快恢复速度。
    • 它还通过提供时间点备份(即,将数据集复制到磁盘)来支持持久性。
  • 高可用性和可扩展性
    • 它构建具有一致性能和可靠性的高可用性解决方案。
    • 有多种选项可用于调整群集大小,例如放大,缩小或放大。这样,可以根据需要更改群集大小。
  • 可扩展性
    • 这是一个充满活力的社区支持的开源项目。

Memcached和Redis之间的区别

Basis for Comparison Memcached Redis
Sub-millisecond latency Its response time is in sub-millisecond as it stores the data in memory which reads the data more quickly than disk. Its response time is in sub-millisecond as it stores the data in memory which read the data more quickly than disk.
Developer ease of use Its syntax is simple to understand and use. Its syntax is simple to understand and use.
Distributed architecture Its distributed architecture distributes the data across multiple nodes which allows to scale out more data when demand grows. Its distributed architecture distributes the data across multiple nodes which allows to scale out more data when demand grows.
Supports many different programming languages It supports languages such as C, C++, java, python, etc. It supports languages such as C, C++, java, python, etc.
Advanced data structure It does not support advanced data structures. It supports various advanced data structures such as sets, sorted set, hashes, bit arrays, etc.
Multithreaded Architecture It supports multithreaded architecture means that it has multiple processing cores. This allows you to handle multiple operations by scaling up the compute capacity. It does not support multithreaded architecture.
Snapshots It does not support the snapshots. Redis also keeps the data in a disk as a point-in-time backup to recover from the fault.
Replication It does not replicate the data. It provides a primary replica architecture that replicates the data across multiple servers and scales the database reads.
Transactions It does not support transactions. It supports transactions that let to execute a group of commands.
Lua Scripting It does not support Lua Scripting. It allows you to execute Lua Scripts which boost performance and simplify the application.
Geospatial support It does not provide Geospatial support. It has purpose-built commands that work with geospatial data, i.e, you can find the distance between two elements or finding all the elements within a given distance.