.NET 使用CouchBase 基础篇
2011年2月,CouchOne和memebase合并后,改名为Couchbase,官网地址(www.couchbase.com)。membase最后一个版本为1.7.2,可在Couchbase的官网下载(http://www.couchbase.com/downloads-all)。
这里不介绍couchbase的安装,只介绍.NET Client Librarye 使用。
- 获得CouchBase For Net的SDK有两种方式
- 通过nuget,Install-Package CouchbaseNetClient
- 通过官网下载http://www.couchbase.com/communities/net
- 开始CouchBase之旅
- 创建项目,这里需要提醒的是,在vs2010中我们创建类Console应用程序时项目默认使用.NET Framework Client Profile,我们需要手动切换至full .NET Framework。
- 在程序中配置CouchBase,CouchBase提供编码配置和配置文件配置,当然使用app.config是最灵活的,这里是我们的首选,添加以下信息至你的配置文件,
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="couchbase" type="Couchbase.Configuration.CouchbaseClientSection, Couchbase"/>
</configSections>
<couchbase>
<servers bucket="default" bucketPassword="">
<add uri="http://192.168.0.2:8091/pools"/>
<add uri="http://192.168.0.3:8091/pools"/>
</servers>
</couchbase>
</configuration>这里使用了集群配置的url列表,当然在你本地调试只需要一个地址,默认CouchBase在安装时会创建一个没有密码的default的缓存桶(bucket),你可以自由修改这块的信息。(如果对bucket不太明白,请自行google)。
- 添加引用
|
using Couchbase; using Couchbase.Configuration; using Couchbase.Extensions; using Enyim.Caching; using Enyim.Caching.Configuration; using Enyim.Caching.Memcached; |
根据实际引用添加引用
- 创建实例及使用
|
var client = new CouchbaseClient(); // 创建实例 client.Store(StoreMode.Add, "somekey", "somevalue"); //存储数据 var someValue = client.Get("somekey") as string; //获取数据 var someValue = client.Get<string>("somekey"); //获取数据 |
以上是简单基本类型的使用,下面我们介绍一下复杂类型。先申明一个类
|
[Serializable] |
|
var key = Guid.NewGuid(); var beer = client.Get<Beer>("beer_" + key); |
在CouchBase2.0正式版就开始支持json,这一点让人激动人心。
存储json数据
|
public static bool StoreJson<T>(this CouchbaseClient client, StoreMode storeMode, string key, T value) where T : class { |
获取json数据
|
public static T GetJson<T>(this CouchbaseClient client, string key) where T : class { |
Client使用方法
|
var key = Guid.NewGuid(); var beer = client.GetJson<Beer>("beer_" + key); |
- 检查和操作结果
官方的说明
For check and set operations, the return values are wrapped in a CasResult instance. The success of the operation is still determined by a Boolean and detailed failures still require logging.
|
var result = client.GetWithCas("foo"); |
- 获取详细操作结果
如果你需要获取运行时的详细信息,你可以使用IoperationResult API方法,下面是官方给的API属性的说明。
Each of these methods shares its name with a method from the single-value return API, but prefixed with "Execute." For example, Get() becomes ExecuteGet() and Store() becomes ExecuteStore().
var getResult = client.ExecuteGet<Beer>("beer_heady_topper"); if (casResult.Success) { |
- 配置日志
CouchBase支持Log4Net和Nlog,你可以自己现在或者从CouchBase提供的SDK获取。
Log4Net 配置参考。
|
<?xml version="1.0" encoding="utf-8"?> |
更多Log4Net配置可参考:http://logging.apache.org/log4net/release/manual/configuration.html.
Nlog配置参考
|
<?xml version="1.0" encoding="utf-8"?> |
更多Nlog配置可参考:http://nlog-project.org/wiki/Configuration_file
总结 :以上信息来源官方的Getting Started,另附一份自己整理的Demo。(通过office word 发布的文档格式有些变形)
.NET 使用CouchBase 基础篇的更多相关文章
- C#多线程之基础篇3
在上一篇C#多线程之基础篇2中,我们主要讲述了确定线程的状态.线程优先级.前台线程和后台线程以及向线程传递参数的知识,在这一篇中我们将讲述如何使用C#的lock关键字锁定线程.使用Monitor锁定线 ...
- 一步步学习javascript基础篇(0):开篇索引
索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...
- 2000条你应知的WPF小姿势 基础篇<15-21>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师,对C#和WPF有着极深的热情.最为出色的是他维护了两个博客:2,000Things You Should Know ...
- ABP框架实践基础篇之开发UI层
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 说明 其实最开始写的,就是这个ABP框架实践基础篇.在写这篇博客之前,又回头复习了一下ABP框架的理论,如果你还没学习,请查看AB ...
- C#多线程之基础篇2
在上一篇C#多线程之基础篇1中,我们主要讲述了如何创建线程.中止线程.线程等待以及终止线程的相关知识,在本篇中我们继续讲述有关线程的一些知识. 五.确定线程的状态 在这一节中,我们将讲述如何查看一个线 ...
- C#多线程之基础篇1
在多线程这一系列文章中,我们将讲述C#语言中多线程的相关知识,在多线程(基础篇)中我们将学习以下知识点: 创建线程 中止线程 线程等待 终止线程 确定线程的状态 线程优先级 前台线程和后台线程 向线程 ...
- iOS系列 基础篇 03 探究应用生命周期
iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...
- iOS系列 基础篇 04 探究视图生命周期
iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...
- iOS系列 基础篇 05 视图鼻祖 - UIView
iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...
随机推荐
- linux 清除驱动对网卡的记录
1.情况说明: 通过U盘做了一个linux 系统镜像(可读可写),设置eth0的ip=10.0.73.11.第一次启动的时候ip正确. 当我将该镜像)在另一台服务器启动的时候,无法通过10.0.73. ...
- 关于android端的json传输
比较通用的传输方法 import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; impo ...
- mongoDB01 介绍
MongoDB是一个开源文档型数据库,能够提供高性能.高可用性以及自动拓展. 文档数据库 MongoDB中的一条记录就是一个文档,是一个数据结构,由字段和值对组成.MongoDB文档与JSON对象类似 ...
- jquery暂停和中断循环
jquery对数组进行循环,如果要求每次循环的时候暂停2秒钟,在.earch循环的时候,无论怎么设置,都不会暂停. setTimeout也只是在第一次执行的时候暂停. 原因猜测: js开始执行多线程? ...
- WordPress插件入口菜单创建的位置代码
Add_management_page() 在Tools下面创建 Add_options_page() 在Settings下面创建 Add_theme_page() 在Appearance下面创建 A ...
- CMS .NET 程序框架 从2.0/3.5升级到4.0 版本后 需要调整的地方
问题一: document.forms1.action 不可使用 需要修改程 document.forms[0] .NET 程序框架 从2.0/3.5升级到4.0 版本后,document.forms ...
- 详解 Python 中的下划线命名规则
在 python 中,下划线命名规则往往令初学者相当 疑惑:单下划线.双下划线.双下划线还分前后……那它们的作用与使用场景 到底有何区别呢?今天 就来聊聊这个话题. 1.单下划线(_) 通常情况下,单 ...
- 【iCore3双核心板】【4.3寸液晶驱动板爆照!】
[源代码完全开源,过几天连同硬件一起发布] 花了好久的时间,我们的fpga工程师才完成这液晶模块的驱动代码,其核心价值如下: 1.完全基于fpga驱动,sdram当做缓存: 2.内建双缓冲机制:方便 ...
- FastDFS connect timed out
java.net.SocketTimeoutException: connect timed outUpload file "1003.png"fails:connect time ...
- itertools 介绍
在python中itertool为python提供一系列迭代iterator的方法. 第一个:组合 排列 itertools.combinations(sq, r) 该函数的作用是在列表sq中穷举所有 ...