`
中国爪哇程序员
  • 浏览: 167993 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Redis和Memcache的区别

 
阅读更多

都是KV键值对内存数据库,功能上类似,但是怎么看都是Redis更加“先进”和功能强大一些,Redis支持更多的数据类型,关键技术对比如下:
作为内存数据缓冲系统,Memcached和Redis均具有很高的性能,但是两者在关键实现技术上具有很大差异,这种差异决定了两者具有不同的特点和不同的适用条件。下面我们会对两者的关键技术进行一些对比,以此来揭示两者的差异。
Memcached和Redis的内存管理机制对比
对于像Redis和Memcached这种基于内存的数据库系统来说,内存管理的效率高低是影响系统性能的关键因素。传统C语言中的 malloc/free函数是最常用的分配和释放内存的方法,但是这种方法存在着很大的缺陷:首先,对于开发人员来说不匹配的malloc和free容易 造成内存泄露;其次,频繁调用会造成大量内存碎片无法回收重新利用,降低内存利用率;最后,作为系统调用,其系统开销远远大于一般函数调用。所以,为了提高内存的管理效率,高效的内存管理方案都不会直接使用malloc/free调用。Redis和Memcached均使用了自身设计的内存管理机制,但是 实现方法存在很大的差异,下面将会对两者的内存管理机制分别进行介绍。
Memcached的内存管理机制
Memcached默认使用Slab Allocation机制管理内存,其主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录,以完全解决内存碎片问题。Slab Allocation机制只为存储外部数据而设计,也就是说所有的key-value数据都存储在Slab Allocation系统里,而Memcached的其它内存请求则通过普通的malloc/free来申请,因为这些请求的数量和频率决定了它们不会对整个系统的性能造成影响
Slab Allocation的原理相当简单。 如图3所示,它首先从操作系统申请一大块内存,并将其分割成各种尺寸的块Chunk,并把尺寸相同的块分成组Slab Class。其中,Chunk就是用来存储key-value数据的最小单位。每个Slab Class的大小,可以在Memcached启动的时候通过制定Growth Factor来控制。假定Figure 1中Growth Factor的取值为1.25,所以如果第一组Chunk的大小为88个字节,第二组Chunk的大小就为112个字节,依此类推。
分享到:
评论

相关推荐

    Redis和Memcache的区别总结

    1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等; 2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储; 3...

    Redis、Memcache、MongoDB区别

    1、里面包含Redis、MongoDB、Memcache相关的学习文档 2、对这三者有比较详细的应用场景告之,并描述出了三者之间区别 3、提供JAVA连接Redis常见问题的解决方案 4、对MongoDB的特性有专门文档作描述 5、对于新手而言...

    php7.3.~redis和memcache扩展包.rar

    标题中的“php7.3.~redis和memcache扩展包.rar”表明这是一份针对PHP 7.3版本的Redis和Memcache扩展的压缩文件,适用于Windows操作系统。这两个扩展是PHP开发过程中常用的缓存管理工具,对于提升Web应用程序的性能至...

    NoSQL Redis 和 Memcache 流量生成和基准测试工具 .zip

    它提供以下功能支持 Redis 和 Memcache 协议(文本和二进制)多线程多客户端执行多种配置选项,包括读取:写入比率随机和连续的键名称模式策略随机或范围密钥过期Redis 集群TLS 支持...还有更多更多详情请阅读Redis ...

    Redis和memcache缓存基本实现

    Redis和Memcached是两种常用的内存数据存储系统,常被用作高性能、低延迟的缓存解决方案。它们在处理大量数据的快速访问上表现卓越,但各自具有不同的特性和使用场景。 Redis,全称Remote Dictionary Server,它是...

    包含Redis,memcache,encache的NoSQL入门

    本教程将带你入门NoSQL的世界,特别是聚焦于Redis、Memcached和EnCache这三种流行的数据存储系统。 **Redis** 是一个开源的、基于键值对的数据存储系统,支持多种数据结构如字符串、哈希、列表、集合和有序集合。它...

    选redis还是memcache

    在互联网分层架构中,Memcached(简称Memcache)和Redis是最常用的键值(Key-Value, KV)缓存系统。两者各有特色,如何根据业务需求和技术背景做出合理的选择成为了一个重要的问题。本文将深入分析这两种缓存技术的...

    redis&memcache;所需扩展包

    在提供的压缩包“redis&memcache所需扩展包”中,可能包含了不同操作系统下的安装脚本、配置文件或额外的扩展组件。确保正确解压并根据系统环境使用这些资源,有助于顺利地在你的系统上部署和使用 Redis 和 ...

    MemCache和Redis缓存介绍

    **MemCache和Redis缓存介绍** 在IT行业中,缓存技术是提高系统性能和响应速度的关键因素之一。MemCache和Redis是两种广泛使用的分布式内存缓存系统,它们能够有效地存储和检索数据,减轻数据库的负担,提升应用的...

    memcache、redis、tair性能对比测试报告

    Ehcache作为组件级缓存,其性能受到web服务器和集群方式的影响,不具备与memcache、redis、tair的直接对比性。而MongoDB是文档型数据库,其设计目标与缓存系统不同,不适宜进行性能对比。 测试场景涵盖了单机环境和...

    使用 Redis、Memcache 等为 Sanic 提供服务器支持的会话 .zip

    目前可用的接口有Redis(支持驱动程序aioredis和asyncio_redis)Memcache (通过aiomcache)Mongodb (通过sanic_motor和pymongo)内存(适用于测试和开发环境)安装安装pip(不同驱动程序还有其他选项,请查看文档)pip...

    ehcache memcache redis 差异

    本文将深入探讨三种常见的缓存系统:Ehcache、Memcached和Redis,分析它们之间的差异,以便于选择最适合特定业务场景的解决方案。 Ehcache是一款广泛应用于Java环境中的开源分布式缓存系统。它最初设计为本地内存...

    memcached数据完整迁移到redis

    5. **高可用性**:Redis 的主从复制和哨兵系统提供了故障转移和高可用性解决方案。 **迁移过程** 迁移过程通常分为以下几个步骤: 1. **数据获取**:使用 C# 客户端库(如 EnyimMemcached)连接到 Memcached 服务,...

    memcache与redis的比较

    memcache与Redis的比较 ...memcache和Redis都是缓存解决方案,但它们有不同的设计理念和应用场景,Redis支持多种数据类型,持久化和事务等功能,而memcache则提供了简单的key-value存储和cas命令来保证并发访问一致性。

    memcache redis tair 性能测试报告

    4. 并发get操作时,memcache和redis的TPS在1KB数据时接近,但在10KB和100KB数据时,memcache保持较高TPS,而redis性能下降。 【总结】 根据测试结果,redis在单线程set和get操作中表现出色,但在高并发set操作且...

    centos下自动安装Memcache、Redis服务端以及PHP扩展

    该脚本基于阿里云服务器安装脚本,并只能运用于centos / aliyun os(因为内部使用了yum安装unzip和dos2unix),该脚本使用时,需要与阿里云安装脚本的install.sh放在同一目录下。有缘人切忌乱用

    session共享之memcache Redis

    标题中的“session共享之memcache Redis”指的是在Web开发中如何使用memcache和Redis来实现会话(session)数据的跨服务器共享。会话管理是Web应用中的关键部分,它允许用户在不同页面间保持状态,例如登录信息、...

    Redis和Memcache对比与如何选择

    Redis 和 Memcache 是两种常用的内存数据存储系统,它们在许多方面有着不同的特性和用途。在选择使用哪个系统时,需要根据具体的业务需求和技术环境来决定。 首先,性能方面,Redis 在处理小数据值时通常在单个核心...

Global site tag (gtag.js) - Google Analytics