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