springboot整合couchbase(集群)
springboot整合couchbase
- 1、Couchbase
- 1.1、介绍
- 1.2、Bucket
- 1.3、Couchbase SDK
- 2、(key,value)写入couchbase集群
- 2.1、总体图
- 2.2、依赖
- 2.3、CouchbaseConfig 配置文件
- 2.4、代码使用
1、Couchbase
1.1、介绍
1.2、Bucket
在 Couchbase 中,bucket 是一个重要的概念,类似于传统数据库中的数据库或表。它是 Couchbase 存储数据的基本单位,主要用于组织和管理数据。
- Bucket 是 Couchbase 中存储文档的容器。每个 bucket 可以包含多个文档,文档可以是 JSON 格式的数据。
1.3、Couchbase SDK
- Couchbase SDK(Software Development Kit)是一个用于与 Couchbase数据库进行交互的开发工具包。
- 它提供了一组 API 和工具,允许开发者通过编程语言(如 Java、Python 等)与Couchbase数据库进行连接、数据操作、查询、集群管理等操作。
2、(key,value)写入couchbase集群
2.1、总体图
2.2、依赖
couchbase服务器的版本是4.0
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>com.couchbase.client</groupId>
<artifactId>java-client</artifactId>
<version>2.7.23</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-couchbase</artifactId>
<version>4.2.0</version>
</dependency>
2.3、CouchbaseConfig 配置文件
package com.baafs.amtiot.couchbase;
import com.baafs.amtiot.Models.VehiclePosition;
import com.couchbase.client.java.Bucket;
import com.couchbase.client.java.CouchbaseCluster;
import com.couchbase.client.java.document.JsonDocument;
import com.couchbase.client.java.document.json.JsonObject;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.databind.ObjectMapper;
public class CouchbaseUtils {
private static final ObjectMapper objectMapper = new ObjectMapper()
.registerModule(new JavaTimeModule());
public static void couchbaseVehiclePosition(String vmeid, VehiclePosition vehiclePosition) {
// 创建 cluster
// 连接 couchbase集群
//<couchbase> C#中couchbase集群配置文件,免密码登录
// 重点 ===== ip:端口:池 buckets
// <servers>
// <add uri="http://192.168.23.37:8091/pools" />
// <add uri="http://192.168.23.38:8091/pools" />
// </servers>
// <buckets>
// <add name="default" useSsl="false">
// </add>
// </buckets>
//</couchbase>
// 1、自动选择端口(池):CouchbaseCluster.create() 会自动使用 8091 端口与集群进行通信,不需要显式指定端口号或 pools
///2、集群发现和负载均衡:Couchbase SDK 会自动进行集群拓扑发现并且会自动负载均衡。
CouchbaseCluster cluster = CouchbaseCluster.create("192.168.23.37,192.168.23.38");
// 连接 bucket 并打开
Bucket bucket = cluster.openBucket("default");
System.out.println("Connected to bucket: " + bucket.name());
try {
// 将 VehiclePosition 对象转换为 JSON
JsonObject content = JsonObject.fromJson(objectMapper.writeValueAsString(vehiclePosition));
JsonDocument inserted = bucket.upsert(JsonDocument.create(vmeid, content));
// 确认插入成功,获取一下
System.out.println("Document inserted with ID: " + inserted.id());
// content
JsonDocument found = bucket.get("SA21009005");
System.out.println("Couchbase is the best database in the " + found.content().toString());
} catch (Exception e) {
System.out.println("Error processing vehicle position: " + e.getMessage());
} finally {
cluster.disconnect();
}
}
}