Couchbase概述

Couchbase概述

Couchbase概述

Couchbase概述
Couchbase最早叫Membase,是由Memcached项目组的一些头目另立的山头。
2011年与CouchDB合并,正式命名为Couchbase。
2013年,作为NoSQL技术初创企业,拿到了2500万美元的D轮投资。
截稿时止,Couchbase最新的版本是4.1.0 Developer Preview。
吴剑 http://www.cnblogs.com/wu-jian
Couchbase是开源的,分布式NoSQL文档型(或Key/Value型)内存数据库,文档结构基于大家都很熟悉的JSON。此外它内置了一个便捷的WEB管理后台,提供企业版,社区版和源代码的下载。如下是一些关于Couchbase介绍的文章:
Couchbase介绍,更好的Cache系统
NoSQL showdown: MongoDB vs. Couchbase
一些主要的官网入口:
官网主页:http://www.couchbase.com
说明文档:http://developer.couchbase.com/guides-and-references
下载地址:http://www.couchbase.com/nosql-databases/downloads
在安装使用Couchbase前, 需要理解一些基础名词:
Node:节点,即一台安装了Couchbase的服务器,所有节点拥有相同的组件和服务,并提供相同的接口。
Cluster:集群,多个节点组成一个集群。
Bucket:Bucket类似于数据库的概念,在Couchbase中我们可为不同逻辑的项目创建不同的Bucket。
Item:一个项即一个Key/Value键值对。
Couchbase服务端安装
从官网下载服务端安装包,然后按提示很简单完成安装过程.
安装完成后会自动在浏览器中打开一个页面,点击“Setup”进行Couchbase服务端配置,官方的配置手册可 参考这里
①设置节点的数据持久化存储位置,建议将数据与索引使用不同位置
②设置节点的IP或主机名
③设置节点开启的服务,以及内存分配
可选择安装Sample以方便学习,需要注意的是在Couchbase中,每个项目都是一个“Bucket”。如果不需要Sample,直接下一步就好。
①设置Bucket的类型,大多数情况下使用Couchbase即可
②为Bucket分配内存以及设置Cache Metadata,Cache Metadata的工作原理可 参考这里
③设置镜像数量
④设置Bucket的I/O优先级,只有当Couchbase中存在多个Bucket时该值才具有实际意义
⑤是否允许Flush,不建议在生产环境中开启
关于Bucket设置更详细的说明可 参考这里
是否接收Couchbase版本更新通知,以及填写注册信息。
最后一步,设置管理员帐号与密码。
Couchbase的安装配置过程非常简单,安装成功后,会有一个“CouchbaseServer”的系统服务,当我们需要启用或停用Couchbase时,通过对这个服务操作即可。
Couchbase客户端配置(.Net)
在官网下载 .Net Client Library,然后在项目中添加引用:
app.config / web.config 配置示例:
?xml version="1.0" encoding="utf-8" ?><configuration> <!--Couchbase客户端配置节点定义--> <configSections> <sectionGroup name="couchbaseClients"> <section name="couchbase" type="Couchbase.Configuration.Client.Providers.CouchbaseClientSection, Couchbase.NetClient" /> </sectionGroup> </configSections> <!--Couchbase客户端配置,参考:http://developer.couchbase.com/documentation/server/4.1-dp/sdks/dotnet-2.2/configuring-the-client.html--> <couchbaseClients> <couchbase useSsl="false" operationLifespan="1000"> <servers> <add uri="http://127.0.0.1:8091/pools"></add> </servers> <buckets> <add name="default" useSsl="false" password="" operationLifespan="2000"> <connectionPool name="defaultPool" maxSize="10" minSize="5" sendTimeout="12000"></connectionPool> </add> </buckets> </couchbase> </couchbaseClients> <!--约束Newtonsoft.Json版本--> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
因为 Couchbase .net client library 使用了 Newtonsoft.json 6,有时我们的项目中使用了 Newtonsoft.json 的其它版本,比如我的项目中使用的就是7,所以需要在配置文件中添加一个 runtime 节点统一约束使用一个统一的版本,避免程序运行出错。
Couchbase客户端代码示例
在安装完成服务端和编写客户端代码之前,其实还有一个很重要的环节:Couchbase服务端的管理,打开浏览器输入 http://localhost:8091 即可进入管理界面,包括 Cluster、Node、Bucket、Item的管理,都是通过这个内置的WEB后台进行的。管理后台功能强大内容繁多,具体细节可 参考这里。
Couchbase的API非常灵活,包括客户端的配置,与服务端的联接,基础的增删读写操作,可以在代码中精确控制每个细节。当然它也提供了一些封装的Helper方便简单调用。
官方提供了一个完整的.Net客户端DEMO,可 点击这里 下载。如果你需要深入研究 .Net Client SDK 可 点击这里 下载它的源代码。
如下代码我封装了一个Couchbase的增、删、读、写示例:
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;
using Couchbase;
using Couchbase.Core;
using Couchbase.Configuration.Client;
namespace ZhengHe.Cache.Couchbase { /// <summary> /// Couchbase工具 /// </summary> public static class Helper { /// <summary> /// 初始化 ClusterHelper /// 参考:http://developer.couchbase.com/documentation/server/4.1-dp/sdks/dotnet-2.2/cluster-helper.html /// </summary> static Helper() { //使用配置节点进行初始化 ClusterHelper.Initialize("couchbaseClients/couchbase"); } /// <summary> /// 在Bucket中获取一个文档 /// </summary> /// <typeparam name="T">动态数据类型</typeparam> /// <param name="key">文档唯一标识</param> /// <param name="bucketName">指定Bucket名称</param> /// <returns></returns> public static T DocumentGet<T>(string key, string bucketName = "default") {
var bucket = ClusterHelper.GetBucket(bucketName); var result = bucket.GetDocument<T>(key);
if (result.Success) {
return result.Content; }
return default(T); }
/// <summary> /// 在Bucket中添加/更新一个文档
/// </summary> /// <typeparam name="T">动态数据类型, The actual document value to store. This can be a scalar value, an object, or a dynamic type.</typeparam> /// <param name="key">文档唯一标识</param> /// <param name="content">动态数据</param> /// <param name="expiry">过期时间(秒),如果小于或等于0表示持久存在</param> /// <param name="bucketName">指定Bucket名称</param> /// <returns></returns> public static bool DocumentUpsert<T>(string key, T content, int expiry = 0, string bucketName = "default") { if (expiry < 0) expiry = 0; var bucket = ClusterHelper.GetBucket(bucketName); var result = bucket.Upsert( new Document<T> { Id = key, Content = content, Expiry = (uint)(expiry * 1000) //将秒转换为毫秒 }); if (result.Success) return true; return false; }
/// <summary> /// 在Bucket中删除一个文档
/// </summary> /// <param name="key">文档唯一标识</param> /// <param name="bucketName">指定Bucket名称</param> /// <returns></returns> public static bool DocumentRemove(string key, string bucketName = "default") {
var bucket = ClusterHelper.GetBucket(bucketName); var result = bucket.Remove(key);
if (result.Success)
return true;
return false; } }//end class}
结束语
关于缓存服务,在Memcached之前,自己尝试过封装.Net Cache,研究过MySQL Memory存储引擎。因各种原因,Memcached被搁置了好久,直到最近几天,把Couchbase的文档通读了一遍,完成了简单的DEMO,不得不说,Couchbase作为一款成熟的商业运营的开源软件,确实做的非常不错,文档和DEMO非常细致,开发部署异常简洁。
写完DEMO后,还迫不及待的进行了一番测试,结果在我的大部分应用中,效率能提升70%左右(当然,这些应用之前没有部署Memcache技术),后面几天我会尽快将Couchbase部署至生产环境。目前花的时间不多,对Couchbase的研究也仅限于初步了解,后续会继续将心得体会和一些细节在此分享,不足之处也请大家指正。
原文地址:http://www.cnblogs.com/wu-jian/p/4957895.html
???企企csvcsvcsvcsvcsvcsv
posted on 2018-08-16 21:11 micwin 阅读(...) 评论(...)  编辑 收藏

转载于:https://www.cnblogs.com/chinanetwind/articles/9490070.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/279594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 2012 - Dynamic Access Control 浅析

Windows 2012相对于前几个版本而已&#xff0c;做出了大量的改进&#xff0c;尤其体现在安全性和虚拟化方面。Dynamic Access Control ( 动态访问控制&#xff09;是微软在文件服务器的访问控制上的新功能&#xff0c;极大的提高了安全性和灵活性。经过一天的研究学习&#xff…

windows rt_如何在Windows RT上轻松将网站添加到Flash白名单

windows rtMicrosoft’s Surface RT and other Windows RT-based machines include the Flash browser plugin, but it only runs on websites Microsoft has whitelisted. We have covered how you can add any website to the Flash whitelist, but now there’s an easier w…

chromebook刷机_您可以购买的最好的Chromebook,2017年版

chromebook刷机While once considered a novelty item by many tech enthusiasts, Chromebooks have broken out of the “just a browser” mold and become legitimate laptops. They’re full-featured, lightweight machines that can do everything most users need them …

Jmeter JDBC请求-----数据库读取数据进行参数化 通过SSH跳板机连接数据库

前期准备&#xff1a; jdbc驱动&#xff1a;mysql-connector-java-5.1.7-bin.jar Jmeter 要链接MySQL数据库&#xff0c;首选需要下载mysql jdbc驱动包&#xff08;注&#xff1a;驱动包的版本一定要与你数据库的版本匹配&#xff0c;驱动版本低于mysql版本有可能会导致连接失败…

Exchange server 2010 beta安装部署流程

本文使用了微软公开发布的exchange server 2010 beta进行部署测试。这篇文档将用到下列产品 windows server 2008 64bit enterprise AD function at windows server 2008 exchange server 2010 beta ----------该exchange server 2010 beta版本属于早期版本&#xff0c;目前最新…

usb 驱动修复_您可以修复物理损坏的USB驱动器吗?

usb 驱动修复Sometimes accidents happen to a USB drive, and you find yourself in a very bad position when your only copy of an important document is on there. When something like this happens, is it possible to fix a physically broken USB drive? Today’s S…

大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5)

大白话5分钟带你走进人工智能-第二十节逻辑回归和Softmax多分类问题(5) 上一节中&#xff0c;我们讲解了逻辑回归的优化&#xff0c;本节的话我们讲解逻辑回归做多分类问题以及传统的多分类问题&#xff0c;我们用什么手段解决。 先看一个场景&#xff0c;假如我们现在的数据集…

下载spotify音乐_如何在Spotify上播放更高质量的音乐

下载spotify音乐With Spotify Premium, you get access to higher quality music streaming. By default (and if you’re on the free plan), Spotify streams at 96kbps on mobile and 160kbps on your computer. At these sort of bitrates, you’ll hear a small but notic…

如何从终端打开Ubuntu Nautilus文件浏览器

Recently, we showed you how to open a directory in Terminal from within Nautilus. However, what if you’re working on the command line in Terminal and need to access the same directory in Nautilus? There’s an easy solution for that. 最近&#xff0c;我们向…

mysql 面试知识点笔记(七)RR如何避免幻读及非阻塞读、范式

2019独角兽企业重金招聘Python工程师标准>>> 表象&#xff1a;快照读&#xff08;非阻塞读&#xff09;--伪MVCC &#xff08;Multi-Version Concurrent Controll多版本并发控制&#xff09; 内在&#xff1a;next-key锁(record锁gap锁) rr serializabel 都支持gap锁…

pdf 奇数页插入页码_如何在Word 2013中的奇数页码上启动新部分

pdf 奇数页插入页码When working on a long document or a book in Word, it’s common to divide the document into sections or chapters. A common practice is to start each new section or chapter on an odd page. This is easily accomplished using sections in Word…

流水线上的思考——异步程序开发模型(2)

上一期我们讲了一个简单的流水线处理流程&#xff0c;正如我们在上期最后所说那样&#xff0c;这个简单的流水线处理流程对于后续有慢设备操作的业务来说&#xff0c;性能有可能偏低。今天我们来讨论一下如何提高性能的方法。首先让我们来大致区分一下一般业务的处理方式。目前…

java ReentrantLock 锁相关笔记

为什么80%的码农都做不了架构师&#xff1f;>>> ReentrantLock重入锁简单理解就是对同一个线程而言&#xff0c;它可以重复的获取锁。例如这个线程可以连续获取两次锁&#xff0c;但是释放锁的次数也一定要是两次 Lock locknew ReentrantLock(true);//公平锁 Lock …

计算机启动程序bios_如何构建自己的计算机,第三部分:准备BIOS

计算机启动程序biosSo you’ve carefully picked out some parts and built a computer, but it doesn’t really do anything…yet. Before we hop into installing your operating system, we need to take a quick look at the BIOS and prepare it for our operating syste…

kindle图书免费下载_如何在Kindle上免费签出图书馆书籍

kindle图书免费下载Tired of paying so much for ebooks? Most libraries these days let you check out eBooks, for free, just like regular books. 厌倦了为电子书支付这么多钱&#xff1f; 如今&#xff0c;大多数图书馆都让您免费阅读电子书&#xff0c;就像普通书籍一样…

总结之:CentOS 6.4系统裁减详解及装载网卡步骤

前言 随着接触Linux的慢慢深入、对Linux也有了一个基本认识了吧&#xff0c;慢慢的接触系统内核、系统配置文件、在了解Linux的系统启动流程后&#xff0c;现在来总结一下一个简单的Linux系统的裁减方法和步骤&#xff0c;一个只有内核文件和几个简单的命令的小Linux系统&am…

android 设备占用_如何查看正在占用Android设备的空间

android 设备占用When you picked up your shiny new Android device, you probably thought “yeah, this has plenty of storage. I’ll never fill it up!” But here you are, some number of months later with a full phone and no clue why. No worries: here’s how yo…

mysql密码正确却提示错误, 不输入密码反而能登录

今天部署阿里云服务器, 发现之前可以连接的mysql服务器突然连接不上了, 密码我确认是正确的,但登录时就是显示密码错误, 很崩溃, 差点气得我就想重装mysql了。 好在经过几番苦寻找到了以下能解决我问题的资料&#xff0c; 成功解决了我的问题&#xff0c; 万分感谢&#xff0c;…

php旧版本windows_Windows的旧版本中如何进行多任务处理?

php旧版本windowsConsidering that DOS was a single-tasking OS and the ties it had with early versions of Windows, just how did earlier versions of Windows manage to accomplish multi-tasking? Today’s SuperUser Q&A post looks at the answers to this ques…

docker swarm的应用----docker集群的构建

一、docker安装 这里我们安装docker-ce 的18.03版本 yum -y remove docker 删除原有版本 #安装依赖包 [rootDocker ~]# yum -y install yum-utils device-mapper-persistent-data lvm2 #添加docker的CE版本的yum源配置文件 [rootDocker ~]# curl https://download.docker…