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

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

谢谢

有帮助吗?

解决方案

的CouchDB和MongoDB都是伟大的数据库,但他们是在现有的RDBMS之上的高速缓存层可怕的选择。除了这个事实,他们仍然相当不成熟,他们不适合在所有的目的。此外,速度明智的你最好去比不使用CouchDB的或MongoDB的缓存层 - 他们都慢了简单的读,甚至比MySQL的/写。是的,NoSQL数据库是“酷”,但是,这并不意味着你应该使用他们的东西,他们不打算这样做。

我会去与Memcached的,因为它只是你会发现最快,最轻的东西,这是众所周知的,很好的支持。

其他提示

如果你担心呼吁管理层和投资者,而目前的系统(你提到的MySQL)的作品,为什么要改变呢?你从一个相当稳定的项目移动到项目仍处于测试阶段,而什么样的价值要补充,如果当前系统中已经运作的?

如上面所提到的,所有的CouchDB资源包含的ETag。

什么没有提及的是,你可以把的任何的HTTP缓存CouchDB中的前解决方案,并将它做的etag基于缓存。这样,您就可以使用清漆,nginx的,任何你想要的。

我还看看卡桑德拉( http://cassandra.apache.org/ )。我试过MemcacheDB和CouchDB的,不知何故发现卡桑德拉更具吸引力(约说不上PHP,因为我使用ColdFusion工作)。下面是相关的问题卡桑德拉PHP模块

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

下次浏览器请求相同的文档时,它会发送收到的 Etag。如果文档未被修改,服务器将使用 HTTP 代码进行响应 304 未修改 您的浏览器会从本地缓存中检索该文档。

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

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

如果您具有持久性memcached的,你应该检查Redis的。它具有所有memecached功能(及以上)具有持久性一起。

我还没有尝试过自己,但我记得读取的Redis还支持分布式缓存API为好。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top