2010-09-21 90 views
4

我正在使用memcache进行缓存(显然),这是伟大的。但我也将它用作交叉请求/进程数据存储。例如,我在我的一个网页上进行网络聊天,并使用memcache将在线用户列表存储在其中。工程很好,但它困扰我,如果我不得不刷新整个memcache服务器(无论出于何种原因),我放弃了在线列表。我也用它来保留一些内容的视图记录(然后我定期更新数据库中的实际行),如果我清除了缓存,我将丢失有关视图的所有数据(从最后一次写入数据库)。什么使用,而不是memcache

所以我问的是这个:我应该用什么来代替memcache来处理这种事情?它需要快速,最好将其数据存储在内存中。我认为一些noSQL产品会很适合这里,但我不知道哪一个。我想使用一些我将来可以用于其他用例的东西,想到分析(例如用户搜索最多的是什么)。

我使用PHP,因此它必须具有良好的绑定。

回答

6

Redis!它就像类固醇上的memcache(好样的)。 Herearesomedrivers

Redis是一个高级的键值存储。它与memcached类似,但数据集不易变,值可以是字符串,完全类似于memcached,但也可以是列表,集合和有序集合。所有这些数据类型都可以使用原子操作来操作,以推/拉元素,添加/移除元素,执行服务器端联合,交集,集合之间的差异等等。 Redis支持不同种类的排序功能。

+0

打了我几秒钟。 +1用于redis。有助于它像memcache一样工作,但可以坚持。可能还应该提及它有四种不同的PHP驱动程序。我相信其中一个人会以你喜欢的方式工作。 – lazyconfabulator 2010-09-21 13:05:01

+0

出于好奇:可以使用redis而不是memcache吗?如果是,为什么? – 2010-09-21 13:06:35

+1

Redis是一个完整的持久性数据结构存储守护进程。很像RDMS(没有ACID)。它允许使用许多复杂的数据类型,如列表,集合和有序集合。对我来说,这听起来像是一个很适合你的需求。 – 2010-09-21 13:38:06

1

您可以尝试memcachedb。它使用与memcache完全相同的协议,但它是持久存储。

你也可以尝试cassandra或redis

+0

我只考虑cassandra只有当你想打击一些*严重*缩放的用途。目前它只能被非常大的网站使用:digg,facebook和朋友。 – 2010-09-27 00:44:35

+0

我其实完全同意这个人刚刚说的话 – 2010-09-27 08:56:12