Redis vs Memcached:选择哪一个 福州小程序开发

Redis vs Memcached:选择哪一个 福州小程序开发

时间:2020-10-6 作者:gykj

Redis vs Memcached:选择哪一个 福州小程序开发

当人们谈论应用程序的性能改进时,每个人都认为的一个不可或缺的因素是服务器端缓存。确定适合需求的正确缓存提供程序是采用服务器端缓存的组成部分。

Redis Memcached 是世界范围内广泛使用的开源缓存提供程序。大多数云提供商都提供开箱即用的Redis和Memcached支持。

在本文中,我想分享Redis和Memcached之间的异同,以及何时需要使用Redis或Memcached。

Redis与Memcached之间的相似之处 福州小程序开发

  • 键值对数据存储
  • 支持数据分区
  • 亚毫秒级延迟
  • NoSQL系列
  • 开源的
  • 受到大多数编程语言和云提供商的支持

支持的数据类型

Memcached: 仅支持简单的键值对结构

Redis: 支持数据类型,例如字符串,列表,集合,排序集合,哈希,位数组,地理空间和超级日志。

Redis允许您访问或更改数据对象的某些部分,而不必将整个对象加载到应用程序级别,对其进行修改,然后重新存储更新的版本。

内存管理

Memcached: 严格存储在内存中,并使用扩展名extstore进行了扩展以将键值详细信息保存到驱动器中

Redis: 当物理内存已满时,可以将详细信息存储到磁盘。Redis具有将最近最少使用的值和最新值交换到物理内存中的机制。

数据大小限制

Memcached:只能存储最大1 MB的数据

Redis:可以存储最大为512 MB(字符串值)的数据

数据持久性

Memcached:不支持数据持久性

Redis: 使用RDB快照和AOF日志持久性策略支持数据持久性

集群模式(分布式缓存)

Memcached:  Memcached不支持现成的分布式机制。这可以使用一致的哈希 策略在客户端实现

Redis: 支持分布式缓存(集群)

多线程

Memcached:支持多线程,因此可以有效地使用系统的多个核心

Redis:不支持多线程

缩放比例

Memcached:可以垂直扩展。仅从客户端实现水平可伸缩性(使用一致的哈希算法)

Redis: 可以水平扩展

资料复制

Memcached: 不支持数据复制

Redis:支持开箱即用的数据复制。Redis Cluster引入了主节点和从节点以确保数据可用性。Redis Cluster具有两个相应的从节点,以实现冗余。

支持的驱逐政策

记忆快取:

  • 最近最少使用(LRU)

Redis:

  • 无驱逐(尝试插入更多数据时,如果已达到内存限制,则返回错误)
  • 所有密钥LRU(从所有密钥中退出最近最少使用的密钥)
  • 易挥发的LFU(从所有密钥中退出最不常用的密钥)
  • 所有键都是随机的(从所有键中随机逐出键)
  • 易失性随机(随机退出具有“过期”字段集的键)
  • 易挥发的TTL(在所有设置了“过期”字段的密钥中,退出最短生存时间和最近最少使用的密钥。)
  • 易失性LRU(从设置了“过期”字段的所有键中退出最近最少使用的键)
  • 易失性LFU(从设置了“过期”字段的所有键中退出最不常用的键)

交易管理

Memcached: 不支持交易

Redis: 支持交易

当处理较小的静态数据时,建议使用Memcached。当处理更大的数据集时,Memcached必须在保存和从缓存中检索的同时对数据进行序列化和反序列化,并且需要更多空间来存储数据。在处理较小的项目时,最好使用Memcached,因为它具有多线程特性和垂直可伸缩性。群集需要大量的精力来配置基础架构。

Redis支持各种数据类型以处理各种类型的数据。它的群集和数据持久性功能使其成为大型应用程序的理想选择。消息队列和事务等其他功能使Redis可以执行超出缓存存储的操作。

除了上述功能外,Redis还支持以下功能

  • 消息队列支持(Pub / sub)
  • 用于数据归档/恢复的快照
  • Lua脚本

结论:  Redis和Memcached都可以作为Cache存储很好地运行。选择哪个项目因项目而异。

从开始阶段就考虑提供商的利弊是明智的,以避免在项目期间进行更改和迁移。

版权所有:https://www.eraycloud.com 转载请注明出处