caching - Memcached、Redis 或 Couchbase

标签 caching redis memcached couchbase

<分区>

我有一个大约 16GB RAM 的 Debian 服务器,我正在使用 nginx 和几个重型 mysql 数据库,以及一些自定义的 php 应用程序。我想在 Mysql 和 PHP 之间实现内存缓存,但是数据库太大而无法将所有内容存储在 RAM 中。就我的研究而言,我认为 LRU 缓存可能更好。这是否排除了 Redis? Couchbase 也是一个考虑因素。

最佳答案

假设有一个独特的服务器运行 nginx + php + mysql 实例,还有一些剩余的空闲 RAM,使用该 RAM 缓存数据的最简单方法就是增加 mysql 实例的缓冲区缓存。数据库已经使用类似 LRU 的机制来处理它们的缓冲区。

现在,如果您需要将部分处理从数据库移开,那么预缓存可能是一种选择。在说memcached/redis之前,如果只考虑一台服务器的话,APC等php集成的共享内存缓存是高效的(实际上比redis/memcached更高效)。

memcached和redis都可以考虑做远程缓存(即在各个节点之间共享缓存)。我不会为此排除 redis:它可以很容易地为此目的配置。两者都允许定义内存限制,并以类似 LRU 的行为处理缓存。

但是,我不会在这里使用 couchbase,它是一种弹性(即应该在多个节点上使用)NoSQL 键/值存储(即不是缓存)。您可能会将一些数据从您的 mysql 实例移动到 couchbase 集群,但仅将其用于缓存在我看来是过度设计的。

关于caching - Memcached、Redis 或 Couchbase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213498/

相关文章:

php - 在 Laravel 中配置高可用的 Redis 集群

spring-boot - 如何将 JWT 保存到 Redis 中?

memcached - 内存缓存和通配符

Asp.Net - ClientCache - 是否会因文件类型而异?

asp.net - 在 ASP.Net MVC 和 IIS 7.5 中设置最佳 http 缓存 header 和服务器参数

java - Guava 缓存和保留检查的异常

redis - 如何测试redis集群

c# - 使用反射获取方法名和参数

python - 在 Python/Django 中使用 Memcached - 问题

c# - 扩展方法的缓存结果