目录
回复内容:
简述
Memcached
Redis
总结
首页 后端开发 php教程 Redis和Memcached有什么区别?

Redis和Memcached有什么区别?

Jul 06, 2016 pm 01:51 PM
memcached php redis 中间件 缓存

Redis里面也有键值对存储,也可以存在内存中,而且还支持持久化存储,而且redis的集群,分布式部署,镜像同步都是原生支持,比memcached要方便一些(memcached还得自己写一致性hash算法来判断某个key对应的value存储在哪个memcached节点上,很麻烦),那么memcached还有什么用呢?
为什么不直接全部都用redis替代memcache呢?
(我是看目前仍然有很多php教程,教科书都是讲memcached,提到redis的还是比较少,我也是看别人博客才知道有这么个东西的。)

回复内容:

Redis里面也有键值对存储,也可以存在内存中,而且还支持持久化存储,而且redis的集群,分布式部署,镜像同步都是原生支持,比memcached要方便一些(memcached还得自己写一致性hash算法来判断某个key对应的value存储在哪个memcached节点上,很麻烦),那么memcached还有什么用呢?
为什么不直接全部都用redis替代memcache呢?
(我是看目前仍然有很多php教程,教科书都是讲memcached,提到redis的还是比较少,我也是看别人博客才知道有这么个东西的。)

看情况而定吧!

  • Memcached是多线程非阻塞IO复用的网络模型;Redis使用单线程的IO复用模型

  • Memcached使用预分配的内存池的方式;Redis使用现场申请内存的方式来存储数据

  • Memcached的服务器端互相完全独立;Redis计划在服务器端内建对集群的支持

  • Memcached可以使用多核;Redis只使用单核

总之,使用简单的key-value存储的话,Memcached的内存利用率更高,当需要除key/value之外的更多数据类型支持时,使用Redis更合适。希望对你有帮助

Redis正在取代Memcached,但是你要知道,Redis是新东西,对于一个庞大的系统来说,要做到整体替换是需要时间的。
目前微博使用的就是Redis集群。

谢邀~~

之前外出没网,现在给题主一些我个人的观点以及一些参考资料,觉得有用的就取吧,有错也欢迎大家支持,觉得不错就点个赞咯~~~

首先我先说明一个观点:存在即合理,有人用说明它具有自身价值。

简述

memcached 和 redis 都很类似:都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高,缺点是数据类型有限,查询功能不强,一般用作缓存。

那么题主说 memcached 的事情 redis 都可以做,那么为什么 memcached 还有人用?那是因为它们两者并不是完全可以相互替代的,它们也有各自的长短优缺点:

Memcached

Memcached的优点:

  • Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。

  • 适用于最大程度扛量,有效为服务器减压。

  • 支持直接配置为session handle。

  • 配置维护的坑比较少。

Memcached的局限性:

  • 数据结构很简单单一,只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。

  • 无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。

  • 无法进行数据同步,不能将MC中的数据迁移到其他MC实例中。

  • Memcached内存分配采用Slab
    Allocation机制管理内存,value大小分布差异较大时会造成内存利用率降低,并引发低利用率时依然出现踢出等问题。需要用户注重value设计。

  • memcached服务端原生不支持水平扩展,必须在客户端编写缓存分布策略来实现分布式缓存,并且由于无法进行数据同步,因此生产环境中出现单机故障时可能会影响部分业务运行。

Redis

Redis的优点:

  • 支持多种数据结构,比如 string(字符串)、
    list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)等等。

  • 支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。

  • 支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。

  • 单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。

  • 支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。

  • 支持简单的事务需求,但业界使用场景很少,并不成熟。

Redis的局限性:

  • Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。

  • 支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。

  • Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用。

总结

在我看来,Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,而Memcached只是简单的K/V缓存。

而且到底是用 redis 还是 memcached 这个还是看题主的需求,因为单纯是做缓存的话,memcached已经足够应付绝大部分的需求,redis 的出现只是提供了一个更加好的选择,但是不代表redis就能完全替代 memcached ,还是那句话,看你的需求是怎么样的。

按照技术的新旧来讲,redis 比 memcached 还更加新,但是成熟醒来说,memcached 应该更加好,再说现在潮流也有开始转投 mongodb了,因为redis 的数据库特征,mongodb更胜一筹。

很多公司的缓存策略中使用memcached的还是占大多数的,再者是redis,最后才是mongodb,发现没有,最新的技术在公司团队的应用还是需要时间的,旧的技术策略还是很多公司团队在用,因为技术成型而且稳定性要好,这也是memcached比redis要被提及的更多的原因。

看需求、看掌握

其实两者性能相近,但是redis性能会略好一些。
redis取代memcached是趋势。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1662
14
CakePHP 教程
1419
52
Laravel 教程
1311
25
PHP教程
1261
29
C# 教程
1234
24
PHP的目的:构建动态网站 PHP的目的:构建动态网站 Apr 15, 2025 am 12:18 AM

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP:处理数据库和服务器端逻辑 PHP:处理数据库和服务器端逻辑 Apr 15, 2025 am 12:15 AM

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

为什么要使用PHP?解释的优点和好处 为什么要使用PHP?解释的优点和好处 Apr 16, 2025 am 12:16 AM

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHP的影响:网络开发及以后 PHP的影响:网络开发及以后 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP与Python:用例和应用程序 PHP与Python:用例和应用程序 Apr 17, 2025 am 12:23 AM

PHP适用于Web开发和内容管理系统,Python适合数据科学、机器学习和自动化脚本。1.PHP在构建快速、可扩展的网站和应用程序方面表现出色,常用于WordPress等CMS。2.Python在数据科学和机器学习领域表现卓越,拥有丰富的库如NumPy和TensorFlow。

See all articles