Memcached 和 Redis 有什么区别,做缓存 WordPress 用哪个好?

Memcached 和 Redis 有什么区别

首先从模型上看,Memcached 是一个分布式内存缓存系统,专注于简单的键-值对存储,设计简单易用,它不支持复杂数据类型,而 Redis 是一个内存数据结构存储,支持更多的数据结构(如列表、集合、排序集合、哈希等),不仅仅是简单的键-值对。

640-1

所以 Memcached 是为简单的读写操作优化的,适合需要快速缓存大量数据的场景,而 Redis 提供了丰富的数据操作功能,对复杂数据操作优化良好,同时也提供了高性能的读写速度,并且 Redis 支持数据持久化,可以将内存数据保存到磁盘,Memcached 没有持久性功能,所有数据都存储在内存中,服务器重启时数据就会丢失,不过作为缓存这个问题不大。

此外,它们还有一点比较大的区别,就是 Memcached 支持多线程,所以支持高并发访问,而 Redis 一般使用单线程模型,虽然通过 I/O 多路复用技术提供高吞吐量,这样就比较在秒杀等场景下使用,不需要考虑并发的问题,因为单线程。

简单做个功能特性对比表格:

特性 Memcached Redis
数据结构
仅支持键值对(String)
支持 String、List、Hash、Set 等
持久化
不支持
支持 RDB 快照和 AOF 日志
线程模型
多线程(高并发读优)
单线程(避免锁竞争,顺序执行)
内存管理
预分配固定内存,LRU 淘汰
支持内存淘汰策略,可配置虚拟内存
集群模式
依赖客户端分片(如 Twemproxy)
原生 Cluster 模式支持
适用场景
简单键值缓存(如会话、HTML片段)
缓存、消息队列、实时统计等复杂场景

Redis 的作者的建议

Redis 的作者 Salvatore Sanfilippo 曾经对这两种基于内存的数据存储系统进行过比较:

  1. Redis 支持服务器端的数据操作:Redis 相比 Memcached 来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在 Memcached 里,你需要将数据拿到客户端来进行类似的修改再 set 回去。这大大增加了网络 IO 的次数和数据体积。在 Redis 中,这些复杂的操作通常和一般的 GET/SET 一样高效。所以,如果需要缓存能够支持更复杂的结构和操作,那么 Redis 会是不错的选择。
  2. 内存使用效率对比:使用简单的 key-value 存储的话,Memcached 的内存利用率更高,而如果 Redis 采用 hash 结构来做 key-value 存储,由于其组合式的压缩,其内存利用率会高于 Memcached。
  3. 性能对比:由于 Redis 只使用单核,而 Memcached 可以使用多核,所以平均每一个核上 Redis 在存储小数据时比 Memcached 性能更高。而在 100k 以上的数据中,Memcached 性能要高于 Redis,虽然 Redis 最近也在存储大数据的性能上进行优化,但是比起 Memcached,还是稍有逊色。

总结一下:Memcached 是解决简单缓存问题的可靠选择,而 Redis 通过提供更丰富的功能和各种各样的特性而优于 Memcached,这些特性对于解决复杂的场景更有优势。

WordPress 使用哪个做缓存好?

如果单纯作为内存缓存来使用,两者其实没有什么区别,那么为什么 WPJAM Basic 为什么使用 Memcached 呢?

这里有一份 4 核 CPU / 8G 内存的服务器上的测试数据:

操作 Memcached QPS Redis QPS
GET 请求
120,000+
100,000+
SET 请求
90,000+
80,000+

可以看出在 WordPress 这样简单的键-值缓存,并且需要处理大量简单数据,Memcached 是一个更好的选择。

此外我们一开始就选择了 Memcached 做 WordPress 的内存缓存的存储介质,并且在使用 Memcached 做内存缓存过程中,针对出现的各种的问题,我也做了很多的优化,比如我们在后台「WPJAM」菜单下的「系统信息」中展示「Memcached」的各种信息。

640-2

当然如果你已经使用了 Redis 做内存缓存或者更熟悉 Redis,WordPress 官方插件库也有很多第三方提供了 Redis 的 object-cache.php,和使用 Memcached 一样,只需要将对应的 object-cache.php 上传到 wp-content 目录即可。

此外也有小伙伴问,WPJAM Basic 会不会集成 Redis,让大家自己选,这个可以明确的说,目前作为简单缓存功能,Memcached 已经足够好用,不会再花时间集成 Redis。

最后还有个问题,Memcached 和 Redis 可以一起用吗?如果作为缓存,WordPress 只能选择一个,因为你上传谁的 object-cache.php,就是用谁得了。

但是不等于使用 Memcached 作为缓存,就不能使用 Redis 了,比如我们之前就利用 Redis 的一些特性做过一些开发,比如因为 Redis 单线程天然串行排队的特性,我们在花生小店秒杀的功能中就是使用 Redis 进行处理的,还有一些简单的消息队列的功能处理,也是基于 Redis 进行开发的。

简单总结

所以最后总结说一下,如果简单的 key-value 的内存缓存,建议使用 Memcached,WordPress 绝大部分站点也是使用 Memcached 进行缓存的,此外 WPJAM Basic 也对此优化得比较完善。

如果要进行复杂的程序开发,比如上面说的电商的秒杀功能 ,消息队列系统等,那么 Redis 才是发挥其长处的地方。

最后再次说一下:WPJAM Basic 插件已经集成了 Memcached,下载 WPJAM Basic 之后,将 wpjam-basic/template/ 目录下的 object-cache.php 文件复制到 wp-content 目录下即可。

本文内容来源于公开网络,出于传递信息之目的整理发布。原文版权归原作者所有,若涉及侵权请先提供版权后联系我们删除

(0)
WP之家WP之家
上一篇 2025年3月13日 下午8:02
下一篇 2025年3月13日 下午8:04

相关推荐

  • 翻译wordpress主题或者插件的2种方法

    翻译 WordPress 主题或插件通常涉及对语言文件(.po/.mo)的本地化处理。以下是详细步骤: 方法 1:通过 PO/MO 文件翻译 1. 定位语言文件 主题/插件目录中寻找 languages 或 lang 文件夹。 查找 .pot(模板文件)或…

    WP教程 2025年3月18日
  • 如何为您的WordPress网站配置Jetpack

    Jetpack被称为一体化插件,涵盖了一系列用例,包括WordPress安全、性能优化、营销工具、分析等。该插件由Automattic维护,该团队是其他流行WordPress服务和产品(如WordPress.com和WooCommerce?)背后的团队。多年来,Jetp

    2025年3月13日
  • WordPress小工具完整指南:如何使用、添加和实施它们来自定义您的网站

    WordPress小工具非常有用。它们允许您在文章正文或页面本身之外向您的网站添加各种额外内容,从而鼓励用户获取信息、关注链接或采取行动。在这篇文章中,我将向您展示您需要了解的有关WordPress小工具的所有信息。如何将它们添加到您的站点,如何创建小工具区域以放置它们,如何安装为您提供更多它们的插件

    2025年3月13日
  • 什么是WordPress主题编辑器以及自定义网站的5种方法

    WordPress主题是一组文件,包括图像、样式表和代码,以及定义网站的视觉外观和功能。但是,WordPress主题并不总是包含您可能需要的功能。为了克服这个问题,WordPress有一个内置的主题编辑器,可让您从仪表板修改主题文件。本文将解释如何使用主题编辑器自定义WordPress主题。我们还将讨论其他五种编辑网站的方法以

    2025年3月13日
  • 如何申请注册免费谷歌翻译API (Cloud Translation), 自动翻译网站

    谷歌云平台注册 如果没有谷歌账号先注册一个,注册的时候需要验证手机号码,选择中国后直接输入手机号码,前面不要放“+86”!如果遇到“此电话号码无法用于进行验证”,把浏览器主语言改成英文即可,或者改用手机注册…

    2025年4月3日
  • 如何搭建旅游博客网站

    许多人都梦想着以环游世界为生;而实际上,有些人能够做到这一点,他们不是飞行员、空姐或商人。这些人被称为旅游博主,他们通过访问和撰写他们生活中的主要爱好-旅游-来获取报酬。在你认为这一切只是一场梦之前,是时候揭穿一些神话,告诉你一些关于如何搭建旅游

    2025年3月13日
  • WordPress手动升级教程

    手动文件更新 1 . 先下载Wordpress最新版解压,得到下面文件。然后把wp-content文件夹删掉,把剩下的文件在FTP上传替换,升级网站文件 2 . 在浏览器上输入地址:域名/wp-admin/upgrade.php升级数据库。 当第一种升…

    2025年3月18日
  • 如何创建WordPress导航下拉菜单

    网站导航是帮助您的用户到达他们想去的地方的关键。精心设计的菜单可以大大改善用户体验(UX),甚至降低跳出率。然而,一个制作不良的人可以做相反的事情。幸运的是,WordPress使您能够创建自定义菜单以满足您网站的需求。您甚至可以使用本机功能添加一个紧凑的

    2025年3月13日