目前,我们正在建立一个网站,可以从我们的父网站进行大量api调用,以获取用户详细信息和其他数据。我们计划在我们这边缓存所有细节。我打算为此使用memcache。因为这是一个实时网站,所以我们期待未来几天的流量更大(不像FB那样,但我的服务器也不像他们一样;))所以我需要你的意见如果我们要去memcache和我们可以面对什么问题你的意见为什么我们不应该去追求它。任何其他选择也会有所帮助。
答案 0 :(得分:14)
https://github.com/steveyen/community-site/blob/master/db_doc/main/WhyNotMemcached.wiki
Memcached非常棒!但不适用于所有情况......
答案 1 :(得分:2)
您应首先为API调用实现通用缓存层。在缓存层的域内,您可以更改要使用的后端策略。如果你看到memcache不适合你可以实际切换(和/或testwise监视它与其他后端相比如何工作)。
更好的是,你可以很容易地在文件系统上编码这个版本(它也有多个后端)而没有依赖另一个守护进程的障碍,所以已经开始使用缓存 - 可能文件系统已经足够你的缓存了需求?
答案 2 :(得分:2)
Memcache很快,但如果你想充分利用它,它也可以使用大量内存。每当您点击磁盘进行I / O时,都会增加应用程序的延迟。拉出经常访问的项目并将它们放在内存缓存上。对于我的大规模部署,我们在那里缓存会话,因为DB和文件系统会话存储都很慢。
建议添加到您的堆栈是APC。它缓存PHP文件并减少每页的总内存使用量。
答案 3 :(得分:2)
替代方案:Redis
Memcached显然受到可用内存的限制,并且在达到内存阈值时将开始抛弃数据。您可能希望查看redis与memcached一样快(在某些基准测试中更快),但允许使用易失性和非易失性键,更复杂的数据结构,以及使用虚拟内存放置至少的选项最近使用的(LRU)键值到磁盘。