java https etcd_Java etcd基本操作

etcd是一个键值存储系统,类似ZooKeeper, key是以目录结构形式组织的,如下:

key的命名例子:

/tizi365

/tizi365/site/name

/tizi365/site/domain

/tizi365/status/urls

key以这种目录树结构方式存储,etcd支持前缀搜索,例如:搜索key 以 /tizi365 为前缀的所有键值,下面介绍java对etcd的基本操作。

说明:因为etcd的Key和value都以字节类型进行存储,所以jetcd包为我们提供了ByteSequence类,用于转换key/value的值。

1.写入数据

// 连接etcd

Client client = Client.builder().endpoints("http://localhost:2379").build();

// 获取KV client

KV kvClient = client.getKVClient();

// 设置Key = "/tizi"

ByteSequence key = ByteSequence.from(new String("/tizi").getBytes("utf-8"));

// 设置value = "test_value"

ByteSequence value = ByteSequence.from("test_value".getBytes("utf-8"));

// 将key和value写入到etcd

kvClient.put(key, value).get();

提示:java etcd依赖配置,请参考连接etcd章节。

2.查询数据

// 连接etcd

Client client = Client.builder().endpoints("http://localhost:2379").build();

// 获取KV client

KV kvClient = client.getKVClient();

// 设置Key = "/tizi"

ByteSequence key = ByteSequence.from(new String("/tizi").getBytes("utf-8"));

// 查询get

CompletableFuture getFuture = kvClient.get(key);

// 获取get请求的结果

GetResponse response = getFuture.get();

// 通过getKvs可以查询get请求返回的结果,可能存在多个Key的情况,所以需要遍历

response.getKvs().forEach( obj -> {

// logger是slf4j的Logger对象

// 查询到的key/value也是字节类型,需要转换,这里转换成字符串。

logger.info("kv: {} {}", obj.getKey().toString(utf8), obj.getValue().toString(utf8));

});

3.前缀匹配

etcd支持根据前缀匹配搜索key。

接上面查询数据的例子:

// 只要为get方法传入GetOption参数,设置前缀匹配的key即可

// 带匹配的key前缀

ByteSequence key = ByteSequence.from("/tizi".getBytes());

// 构建GetOption对象,通过withPrefix方法,设置前缀匹配的key

GetOption op = GetOption.newBuilder().withPrefix(key).build();

// 通过KV client的get方法查询,跟普通的get请求的区别就是多了一个GetOption参数

CompletableFuture getFuture = kvClient.get(key, op);

4.删除数据

ByteSequence key = ByteSequence.from("/tizi".getBytes());

kvClient.delete(key).get();

// 根据key前缀匹配,批量删除

DeleteOption deleteOption = DeleteOption.newBuilder().withPrefix(key).build();

kvClient.delete(key, deleteOption).get();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值