caching - 堆叠缓存引擎

标签 caching redis memcached varnish eaccelerator

我试图更好地理解缓存引擎的差异,以及哪些引擎可以相互叠加。现在我们有两个网络服务器和一个单独的数据库服务器。我们将通过 TCP 使用 Redis,以便两个网络服务器共享相同的缓存。我对 Varnish 或 eAccelerator 很感兴趣——据我所知,eAccelerator 是一个 php 缓存引擎,而 Redis 类似于 Memcached 是一个数据库缓存——那么这两个应该叠加吗?那么 Varnish 呢?据我了解,Memcached 和 Redis 是相互排斥的。

最佳答案

Memcached and Redis are mutually exclusive as I understand.

在大多数情况下,是的。但是,如果您的数据集超出了 RAM(单个节点)通常可以容纳的范围,则 memcached 的扩展性优于 Redis,因为大多数 memcached 客户端库支持在一组 memcached 节点之间分布数据的一致性哈希,因此所有内存的总 RAM节点成为您的总数据集容量;只需添加更多 Memcached 节点即可增加容量。

您可以使用 Redis 进行分片(水平扩展)以支持更大的数据集,但这样做的选择有限。微博开发twemproxy跨一组redis节点对redis键进行分片;同时Redis Cluster仍在进行中,twemproxy 是扩展 redis 的推荐方法。

所以使用一个或另一个;你不需要两者,但在任何一种情况下,网络/应用程序服务器通常是 memcached/redis 的客户端。

I'm interested in Varnish, or eAccelerator - as I understand eAccelerator is a php-caching engine.

Varnish 是一个反向缓存代理,驻留在您的应用程序/网络服务器前面。它缓存整个呈现的页面并大大减少应用服务器上的负载。它通常是典型网络堆栈中的入口点(不包括负载均衡器)。

我没有使用 eAccelerator 的经验,但根据快速研究,它与 Varnish 并不相互排斥。典型的堆栈可能包括与 PHP/eAccelerator 或 APC 对话的 Varnish (也检查一下)。此外,您可能需要考虑将 nginx 添加到组合中,请参阅 this .

希望对你有帮助

关于caching - 堆叠缓存引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17896555/

相关文章:

caching - 为 OSGi 环境中服务的静态资源设置自定义响应 header

server - 为什么我的 redis 服务器不活动 - Ubuntu 16.04

Node.js - 使用 Redis 原子更新进行扩展

c# - 如何开始使用 memcached

java - 可以持久保存到磁盘的 memcached 的替代品

ios - 删除图像缓存

java - 无法为任何静态资源设置缓存控制 header (Spring)

database - 在 Redis 中存储和读取通知的最佳方法(Json 或多数据结构)?

memcached - 多级内存键值存储数据库

c++ - 与 linux 信号/条件变量相比的缓存一致性开销