我了解到Asp.Net的默认会话提供程序对于分布式应用程序来说不是一个好习惯。所以我决定将asp.net的sessionprovider更改为couchbase。但我不确定当我尝试选择数据桶时使用哪个。我知道Couchbase是一个持久的no-sql db,memcached是一个缓存服务器。
使用couchbase bucket而不是memcached bucket有什么优缺点,反之亦然?
我正在使用couchbase 2.0和https://github.com/couchbaselabs/couchbase-aspnet库将couchbase转换为sessionprovider。
答案 0 :(得分:7)
无论使用Couchbase存储桶还是Memcached存储桶,您都将体验到类似的优势。即使使用Couchbase存储桶,文档也存储在RAM中。文档也首先写入RAM,然后异步写入磁盘。因此性能应该类似。与其他进程外会话状态解决方案(例如,SQL Server)相比,Couchbase应该表现得更好。
除了性能之外,(正如@DB_Chick所说),您将拥有在节点发生故障时能够重新创建会话的优势,因为数据不会因服务器而死(假设已启用复制)。
如果您使用Couchbase存储桶与Couchbase Server 2.0,您将获得额外的优势,能够针对您的会话数据编写map / reduce视图(如果您存储JSON数据结构,则最简单)。通过视图,您可以轻松地询问“我有多少活动会话?”
最后,您的会话数据仍将使用Couchbase存储桶过期。当您在会话数据上设置到期时,Couchbase会在定期安排的后台清理作业期间或在到期后检索项目时标记要删除的项目。
答案 1 :(得分:4)
Couchbase存储桶支持各种Couchbase特定功能,包括在线重新平衡(用于扩展群集),持久性和复制以及故障转移。这是推荐的桶类型。
memcached存储桶旨在仅支持核心memcached协议作为内存缓存。因此,支持和功能仅限于独立的memcached实现中的相同功能。
此处提供更多信息:http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-introduction-architecture-buckets.html