现如今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
List<URI> uris = new LinkedList<URI>();
// 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.add(key, expiry, value) 添加一个key-value数据。expiry是该数据的失效时间,单位很秒,最大为30*24*60*60,即30天;如果为0,则表示该数据不会失效。
- client.get(key) 这就是通过key来查询value
-
client.set(key, expiry, value) 相当于saveOrUpdate,如果该数据不存在,则添加;如果存在,则更新
- 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,为了保持数据一致性。
-
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-client, Couchbase服务器的正式Java客户端 官方 Couchbase SDK这个项目是Couchbase在使用 Java ( 或者在JVM上) 时的官方驱动程序。 它通过异步和同步api提供管理。CRUD和查询设施。特性高性能键/值和...
在实际开发中,使用Couchbase Java客户端可能涉及以下步骤: 1. **安装和配置**:将JAR文件添加到项目构建路径,配置Couchbase服务器的连接信息,如地址、端口和认证。 2. **连接和桶操作**:初始化客户端,建立...
4. Java SDK或Couchbase的其他客户端库的使用,如数据插入、查询、更新和删除操作。 5. 源码分析,可能包括Couchbase的API设计原则、性能优化技巧等。 6. 如何在Eclipse中设置开发环境,包括安装必要的插件和配置。 ...
couchbase-java-cache 这是针对 Couchbase Java SDK 2.0 的正在进行的 JCache 实现。 请参阅 JSR-107 、 和。 基本操作暂时实现。 部分缺失/缺失 到期由底层 couchbase 存储桶管理,不会通知 不支持 ...
本项目聚焦于Couchbase Java SDK 1.4.x和2.0.x版本的示例,旨在帮助开发者更好地理解和使用Couchbase在Java环境中的功能。 Java SDK是Couchbase与Java应用程序交互的主要接口,它提供了丰富的API来执行各种操作,如...
couchbase-lite-java-core, Couchbase Lite核心库 是什么? Couchbase Lite Android库分为两个部分:这个模块没有对 Android API的依赖,而且在非Android环境中可用。couchbase-lite-android - 对 Android API有
我们建议您查看我们的3.x系列,可以在这里找到: : 使用Java(或在JVM上)时,该项目是Couchbase的官方驱动程序。 它通过异步和同步API提供管理,CRUD和查询功能。特征高性能键/值和查询(N1QL,视图,搜索,分析)...
Couchbase Java SDK的字段级加密 该库在Couchbase Java SDK中添加了对字段级加密(FLE)的支持。 它包括您可以立即使用的加密算法和密钥环,并提供了用于实现自己的加密组件的框架。 使用此软件须遵守 。 兼容性 ...
8. SDK支持:Couchbase 4.5.1版本支持多种编程语言的SDK,包括Java、.NET、Python、PHP、Node.js等,方便开发人员在不同平台上集成Couchbase。 在使用这个自动化安装包时,你需要根据你的系统环境和需求对配置文件...
4. **Java 客户端**:标签 "Java" 表示 Ignitr-Couchbase 使用 Java 编写,这使得它能广泛应用于各种Java应用程序中,包括基于Spring Boot的微服务架构。 5. **服务发现机制**:通过集成 Eureka,Ignitr-Couchbase ...
CouchbaseMock-Couchbase测试服务器CouchbaseMock是一个测试服务器,实现了一些memcached协议,某些SDK(包括C SDK)使用该协议进行基本测试。 尽管建议对真实服务器进行测试,但CouchbaseMock具有独立性(无需将其...
Pro Couchbase Development: A NoSQL Platform for the Enterprise discusses programming for Couchbase using Java and scripting languages, querying and searching, handling migration, and integrating ...
这是一个共享的原生SQLite库,用于CoucBaseLite Android /Java。
通过研究这些示例,开发者不仅可以学习到如何使用Couchbase Java客户端,还可以了解到最佳实践和常见的设计模式。此外,这也有助于理解Couchbase的分布式架构和内存优化策略,这对于构建高可用性和可扩展性的应用至...
Couchbase Java DCP客户端此存储库包含Couchbase DCP(数据库更改协议)客户端的纯基于Java的实现。 重要说明:Couchbase并未直接正式支持java-dcp-client 。 它用作更高级别(受支持)库(例如我们的kafka或elastic...
Couchbase-Lite-ORM 这是在Java中为Couchbase Lite实现ORM的第一种方法。 我还在努力。主要观点Couchbase Lite的API相当不错,我不会将其隐藏。 Couchbase Lite ORM仅将文档转换为您的域对象,反之亦然。 您不需要...
本文将通过"android-couchbase.zip"这个压缩包中的示例,深入解析如何在Android项目中集成并使用Couchbase Lite。 一、Couchbase Lite安装与初始化 1. 添加依赖:在Android项目的build.gradle文件中,引入...
本项目“couchbase-game-java”就是一个使用Couchbase Server的示例应用,帮助开发者了解如何在Java环境中与Couchbase进行交互。 首先,我们需要安装Couchbase Server。下载并安装完成后,启动服务器,并创建一个新...
Java SDK 2.0和Couchbase Server 3.0的示例应用程序 注意:这是对以前的SDK 2.0教程材料的重写,适用于2.1及更高版本。 您可以在oldtutorial分支上找到先前的资料,请查看。 需要什么 Beersample样品桶 beer / ...