WordPress 缓存方案:Memcached 和 Redis 哪个更好?
大家都知道 wordpress 的功能十分强大,浏览十分缓慢,网上各种优化 wordpress 的教程也是层出不穷,我也是一直在想尽一切办法来加速 LeafBox 的加载速度,前期也用过各种插件,wp-rocket,wp super cache,然而发现功能确实强大,但使用繁琐,难度也大。
LeafBox 用户群体是面向国内,所以必须要对国内访问友好,国内打开网页的速度要快,采用的是动静分离的方式,就是静态资源,JS, CSS, 图片都放CDN上。
实现了动静分离感觉还是有点慢,接下来就要开启 Memcached 缓存和 Opcache 缓存。果然打开网页的速度比原先快了有几倍,效果十分显著,后来了解到类似 Memcached 这样的缓存方法还有一个是Redis,经过测试,感觉和 Memcached 的缓存效果差不多,速度也差不多,那么Memcached 和 Redis究竟哪个更适合 wordpress 呢?我们试着分析一下吧。
分析
虽然已经使用了CDN( Content Delivery Network )且使用云数据库来减轻服务器的负担。
CDN 虽然把静态资源缓存了,但是对于动态资源(CDN不缓存)就不是很友好了,毕竟动态资源需要实时更新。
Memcached 相信大家并不陌生,它是一套分布式的高速缓存系统,通俗来说就是一个内存缓存服务器。通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度。
说到这里,感觉 Memcached 跟 CDN 功能是不是有一点点相似?
只是 CDN 是缓存静态资源而 Memcached 是缓存数据库查询结果。
而且 Memcached 将数据库查询结果缓存在内存中,一般来说内存比硬盘读写快数倍。Redis 也是同样的道理。
但是Memcached 相对于 Redis 来说内存要求更低,但是 Redis 支持将内存中的缓存数据保存在磁盘中,以便于服务器在重启后再次加载缓存数据。 Memcached 则不行。
结论
相对于物理内存富裕的朋友,你当我什么都没说。
相对于物理内存吃紧的朋友,你就可以考虑 Memcached 来进行缓存了,如果需要考虑数据持久性可以安装 Opcache 配合使用。
相对于使用CDN的朋友,使用 Memcached 还是 Redis 都是没有问题的。但是各位如果要是还修改网站的js或者css文件时,记得刷新一下缓存,要不然没反应的。
为什么我不推荐 Redis 呢?
观点1:物理内存小于2G的服务器使用 Redis 会很吃力,在特殊环境下可能起反作用。
观点2:虽然仅作为缓存服务器使用时性能比其他的会更好,但是耗尽物理内存后,使用 Swap(虚拟内存)时,写入速度大幅度减慢。当 Swap 也消耗殆尽时,客户端将抛出异常。 Memcachedb 内存占用少于物理内存且相当稳定。
安全性
个人认为使用 Memcached 或 Redis 并没有任何安全问题。
Memcached 或 Redis 的监听端口并没有暴露在公网但这仅仅是未开启远程访问的结论
如果项目需要开启远程访问,则考虑的不是 Memcached 或 Redis 是否安全,而是端口暴露风险。
LeafBox | 树叶盒子 » WordPress 缓存方案:Memcached 和 Redis 哪个更好?