1

我们需要一种缓存解决方案,该解决方案基本上可以根据用户偏好和标准在 3 天到一周的任何时间缓存数据(文本文件)。在这种情况下,基于内存的缓存对我们来说没有意义。我们被提到 MemcacheDB 但是我也想到了一些没有 SQL 的解决方案。

我们当前的应用程序使用 RDMS (MYSQL),我认为使用 MemcacheDB 是有意义的,但是 NOSQL 确实很有吸引力,因为它即将出现。但是,我们还没有在 NOSQL 下部署生产级应用程序,并且测试版的内容与管理层/投资者的关系并不好。任何你的想法是什么,你将如何解决它?

谢谢你

4

6 回答 6

4

CouchDB 和 MongoDB 都是很棒的数据库,但是对于现有 RDBMS 之上的缓存层来说,它们是糟糕的选择。除了它们仍然相当不成熟之外,它们根本不适合目的。此外,在速度方面,你最好不要使用缓存层而不是使用 CouchDB 或 MongoDB——它们对于简单的读/写来说都比 MySQL 慢。是的,NoSQL 数据库很“酷”,但这并不意味着您应该将它们用于它们不应该做的事情。

我会选择 Memcached,因为它几乎是你能找到的最快、最轻的东西,而且它众所周知并且得到很好的支持。

于 2010-05-12T03:44:08.053 回答
2

如果您担心对管理层和投资者的吸引力,并且当前系统(您提到 MySQL)有效,您为什么要改变?您正在从一个相当稳定的项目转移到仍处于测试阶段的项目,如果当前系统已经运行,您会增加什么价值?

于 2010-05-11T18:36:27.957 回答
1

如上所述,所有 CouchDB 资源都包含 etag。

没有提到的是,您可以将任何HTTP 缓存解决方案放在 CouchDB 前面并让它进行基于 etag 的缓存。这样你就可以使用 Varnish、nginx 等任何你想要的东西。

于 2010-05-12T03:35:54.657 回答
0

我还想看看 Cassandra ( http://cassandra.apache.org/ )。我试过 MemcacheDB 和 CouchDB,不知何故发现 Cassandra 更有吸引力(不知道关于 PHP,因为我与 Coldfusion 合作)。这是相关的问题Cassandra PHP 模块

于 2010-05-11T18:18:11.367 回答
0

CouchDB 已经进行了一些缓存:当您获取文档时,服务器还会发送 HTTP ETag 标头(它与 CouchDB 中的文档修订相同)。

下次浏览器请求相同的文档时,它会发送收到的 Etag。如果文档没有被修改,服务器会响应 HTTP 代码304 Not Modified并且您的浏览器会从其本地缓存中检索文档。

但是,如果您必须根据用户偏好在不同时间缓存文件,即使文本文件发生更改,您最好的选择可能是编写自定义代码,根据用户偏好发送适当的 HTTP 缓存标头。

为了完整起见,另一个不错的选择是Redis。您可以获得与 Memcache 相当的性能,但 Redis 还支持各种数据结构(散列、列表、集合、排序集)和原子操作。

于 2010-05-11T20:34:23.407 回答
0

如果您使用持久性进行 memcached,则应该查看 Redis。它具有所有 memecached 功能(以及更多)以及持久性。

我自己没有尝试过,但我记得读过 Redis 也支持 memcached API。

于 2010-05-12T02:43:32.340 回答