我正在使用memcache进行缓存(显然),这很棒。但我也将它用作交叉请求/流程数据存储。例如,我在其中一个页面上进行了网络聊天,并使用memcache存储其中的在线用户列表。工作得很好但令我困扰的是,如果我必须刷新整个memcache服务器(无论出于何种原因)我放松了在线列表。我还用它来记录一些内容的视图(然后我定期更新数据库中的实际行),如果我清除了缓存,我会丢失所有关于视图的数据(从最后一次写入到db)。
所以我要问的是:我应该使用什么而不是memcache来做这类事情?它需要快速并且最好将其数据存储在内存中。我认为一些noSQL产品在这里很合适,但我不知道哪一个。我想在未来使用一些我可以用于其他用例的东西,想一想分析(例如用户搜索的最多)。
我正在使用PHP,因此它必须具有良好的绑定。
答案 0 :(得分:6)
Redis!这就像关于类固醇的记忆(好的)。 Here are some drivers。
Redis是一个高级键值存储。它类似于memcached,但数据集不是易变的,值可以是字符串,与memcached完全相同,但也可以是列表,集和有序集。所有这些数据类型都可以通过原子操作来操作,以推送/弹出元素,添加/删除元素,执行服务器端并集,交集,集合之间的差异等等。 Redis支持不同类型的排序功能。
答案 1 :(得分:1)
您可以尝试memcachedb。它使用与memcache完全相同的协议,但它是持久存储。
您也可以尝试cassandra或redis