3

我了解到 Asp.Net 的默认 sessionprovider 不是分布式应用程序的好习惯。所以我决定将 asp.net 的 sessionprovider 更改为 couchbase。但是当我尝试选择数据桶时,我不确定使用哪个。我知道 Couchbase 是一个持久的 no-sql 数据库,而 memcached 是一个缓存服务器。

使用 couchbase bucket 而不是 memcached bucket 的优缺点是什么,反之亦然?

我正在使用 couchbase 2.0 和https://github.com/couchbaselabs/couchbase-aspnet库将 couchbase 转换为 sessionprovider。

4

2 回答 2

8

无论是使用 Couchbase 存储桶还是 Memcached 存储桶,您都会体验到类似的优势。即使使用 Couchbase 存储桶,文档也存储在 RAM 中。文档也先写入 RAM,然后异步写入磁盘。所以性能应该是相似的。与其他进程外会话状态解决方案(例如,SQL Server)相比,Couchbase 的性能应该要好得多。

除了性能之外,(正如@DB_Chick 指出的那样)您将具有在节点故障时能够重新创建会话的优势,因为数据不会随服务器而死(假设启用了复制)。

如果您将 Couchbase 存储桶与 Couchbase Server 2.0 一起使用,您将获得能够针对会话数据编写 map/reduce 视图的额外优势(如果您存储 JSON 数据结构,则最简单)。有了视图,您可以很容易地问“我有多少活动会话?”

最后,您的会话数据仍将随 Couchbase 存储桶过期。当您在会话数据上设置到期时,Couchbase 会在定期安排的后台清理作业期间或在到期后检索该项目时将该项目标记为删除。

于 2012-10-08T15:23:41.607 回答
5

Couchbase 存储桶支持所有特定于 Couchbase 的功能,包括在线重新平衡(用于扩展集群)、持久性和复制以及故障转移。这是推荐的存储桶类型。

memcached 存储桶旨在仅支持核心 memcached 协议作为内存缓存。因此,支持和功能仅限于与独立 memcached 实现相同的功能。

更多信息在这里: http: //www.couchbase.com/docs/couchbase-manual-2.0/couchbase-introduction-architecture-buckets.html

于 2012-10-05T09:00:46.577 回答