现如今nosql技术越来越流行,它的纯粹类似于map的key-value数据形式,是对关系数据库的一个很好的补充。它无法进行多表的关联查询,对数据的一致性维护也不好,但它能够高效的对数据库进行并发读写,更适合当今的web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站。

而这里我研究的是couchbase,它是MemBase与couchDb的合并的产物,功能非常强大,而现在著名的draw something这个应用就是使用了couchbase来存储它少量的画图文件。couchbase的官网是 http://www.couchbase.com,它现在运行java、c#、php等多种常用语言,用户们可以在该网站下载server使用,里面还有官方文档。

现在来说说java的使用

连接couchbase:

Java代码

List uris = new LinkedList();

// Connect to localhost or to the appropriate URI

uris.add(URI.create("http://127.0.0.1:8091/pools"));

CouchbaseClient client = null;

try {

client = new CouchbaseClient(uris, "default", "");

} catch (Exception e) {

System.err.println("Error connecting to Couchbase: "

+ e.getMessage());

System.exit(0);

}

这就连接了数据库,对数据的所有操作都使用client。

其中 client = new CouchbaseClient(uris, "default", "");第一个参数是各个服用器的url(多服务器),default是默认的数据库名(当安装couchbase时会自动创建),第三个参数是该库的密码。default是数据库默认创建,没有密码。

下面说下client的常用方法

client.get(key) 这就是通过key来查询value

client.append(casunique, key, value) 为一个key,增加数据。当一个client添加了数据后,另一个client再调用append就可能会出现数据不一致的问题,所以要用casunique。casunique相当于版本,对一个key的value做任何修改都会改变这个key的casunique。所以要append时必须把版本加上来匹配。如果key当前的casunique为10,那么client.append(9, key, value)这种修改无效,必须是client.append(10, key, value)才可以。

casunique可以用client.gets("e").getCas()来得到。

client.cas(key, casunique, value) cas()方法相当于set方法,但使用了casunique,为了保持数据一致性。

Java代码

CASResponse casr = client.cas("caskey", casvalue, "new string value");

if (casr.equals(CASResponse.OK)) {

System.out.println("Value was updated");

}

else if (casr.equals(CASResponse.NOT_FOUND)) {    System.out.println("Value is not found");}

else if (casr.equals(CASResponse.EXISTS)) {

System.out.println("Value exists, but CAS didn't match"

);

client.touch(key, expiry) 更新一个key的过期时间

如果key对应的value是数字,如果数字要相加,那么不能用append,因为append的相加是位运算,对数字来说是无法得到正常结果,所以可以使用client.incr(key, offset),offset是相加的值。

client.incr(key, offset, default) 在上一个方法中,如果没有相应的key,value也没有值。而在这个方法中,如果没有相应的key,则他创建该key,value为default(注意,第一个调用这个方法创建key是,value并不会加上offset)。

client还有一个decr方法用来对value为数字的key做递减,但我发现incr方法中如果offset为负数也能做递减,而decr在使用中却出了问题,并不能真正的对数字递减,这个功能先保留,以后再好好看。

couchbase java 手册_couchBase在java中使用的基本知识相关推荐

  1. couchbase java 手册_couchbase的使用 java

    现如今nosql技术越来越流行,它的纯粹类似于map的key-value数据形式,是对关系数据库的一个很好的补充. 它无法进行多表的关联查询,对数据的一致性维护也不好,但它能够高效的对数据库进行并发读 ...

  2. Java字符串的重要性_java中的字符串相关知识整理

    字符串就是一系列的字符组合的串,如果写过C/C++的应该就了解,在字符串的操作上会有许多操作的函数与类,用于简化代码的开发.一方面是因为字符串在代码中会频繁用到,另一方面是因为字符串的操作非常麻烦. ...

  3. 学习笔记(11):Java小白修炼手册-一句话在Java中如何表达?快学Java字符串

    立即学习:https://edu.csdn.net/course/play/27274/361060?utm_source=blogtoedu 1 JDK Java语言的开发包(开发使用) JRE J ...

  4. Couchbase:使用Twitter和Java创建大型数据集

    在播放/演示Couchbase或任何其他NoSQL引擎时,创建大型数据集的一种简单方法是将Twitter feed注入到数据库中. 对于这个小应用程序,我正在使用: Couchbase Server ...

  5. 阿里《Java手册》做一个有技术情怀的人

    导读 最近重温了阿里的<码出高效Java开发手册>,感觉最后一页"聊聊成长"这一小块的内容写的很棒,特意把它复制出来,送给每一个技术人,愿你做一个有技术情怀的人. 正文 ...

  6. java代码内创建mysql索引_点评阿里JAVA手册之MySQL数据库 (建表规约、索引规约、SQL语句、ORM映射)...

    下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文内容:MySQL数据库 (建表规约.索引规约.SQL语句.ORM映 ...

  7. ictclas包 java_ICTCLAS分词系统Java调用接口在Eclipse中的安装

    ICTCLAS分词系统Java调用接口在Eclipse中的安装 实验环境:JDK1.5.Eclipse3.1.XP操作系统 分词系统Java接口解压包:d:\fenci(http://www.nlp. ...

  8. 不迈出第一步_Java 11手册:新Java发布系列迈出的一小步,Java 8用户迈出了一大步...

    不迈出第一步 Java 11:废除Java 8是否足够重要? 为了庆祝Java 11的发布,我们邀请了9位Java专家与他们分享最新版本的最佳和最差体验. 由于本系列旨在作为Java 11的手册,因此 ...

  9. [ IntelliJ IDEA Java开发配置 : 不断完善中]

    推荐在看本文之前先阅读IntelliJ IDEA 官方文档: https://www.jetbrains.com/help/idea/install-and-set-up-intellij-idea. ...

  10. java定时器停止_java 定时器中任务的启动、停止、再启动

    package com.cvicse.ump.timer.service; import java.util.Date; import java.util.Timer; import com.cvic ...

最新文章

  1. javascript的Array对象
  2. PHP图片裁剪_图片缩放_PHP生成缩略图
  3. JSON:如果你愿意一层一层剥开我的心,你会发现...这里水很深——深入理解JSON...
  4. 进击的docker 二 : docker 快速入门
  5. 容器精华问答 | 如何进行跨机器的Container做Link ?
  6. github 部署mysql_GitHub - luckman666/deploy_mysql_cluster: 一键部署mysql集群
  7. okhttp框架学习
  8. mvc路由原理 php_s-blog博客系统开发之前端路由配置
  9. POJ2255 Tree Recovery 前序 中序求后序
  10. ftdi+usb转串口驱动+android,FTDI usb转串口驱动
  11. 朱利亚 matlab分形图,分形实例的赏析
  12. C++ 实现即时通信软件(直接运行)
  13. python语言智慧树期末答案_2020智慧树Python语言应用期末答案
  14. 工具栏的打印图标不见了_XP操作系统工具栏右边的打印机图标不见了
  15. java中怎么输入中文_MultiMC下载-MultiMC中文实用版 v1.0
  16. NAT技术配置(内外网IP地址转换)
  17. 邀您一同分享财富乐歪歪童装加盟正火热进行中
  18. 制造业干货,只需3步,快速提高产品良率!
  19. 2015物联网安全年报
  20. AIC和BIC相关知识

热门文章

  1. Linux中Vim的安装
  2. 推好单-好券app是怎么代理分享赚钱的?
  3. 二分类模型AUC评价法
  4. 打印101~200之间的素数
  5. react native 直传 阿里云 OSS云存储
  6. 友华改设备标识命令_无需拆机,几步搞定,解锁湖南电信光猫(友华PT926E)高级功能,可改桥接...
  7. JS生成uuid的四种方法
  8. 邮箱大师与微软Acompli功能评测
  9. 1秒钟等于多少毫秒,等于多少微秒
  10. java 冒泡排序详解_「图文+动画」超级详细详解冒泡排序