在分布式系统中,etcd
是一个高可用的键值存储,用于存储和共享配置信息、服务发现、协调等。向 etcd
删除key可以通过多种方式进行,常见的方式是使用 etcd
提供的 HTTP API 或者通过客户端库来进行操作。
目录
- 一、使用EtcdCtl工具来写入数据
- 1.1、设置环境变量(可选)
- 1.2、使用etcdctl del删除key
- 1.3、通过etcdctl del -h来查看相关帮助信息
- 二、使用go 客户端删除key
- 2.1、安装 Go 客户端库
- 2.2、示例代码
- 三、使用Java客户端删除key
- 3.1、添加pom依赖
- 3.2、写入数据示例代码
一、使用EtcdCtl工具来写入数据
1.1、设置环境变量(可选)
export ETCDCTL_API=3
export ETCDCTL_ENDPOINTS=http://localhost:2379
1.2、使用etcdctl del删除key
etcdctl del <key>
etcdctl del /config/db/host
1.3、通过etcdctl del -h来查看相关帮助信息
D:\data>etcdctl del -h
NAME:del - Removes the specified key or range of keys [key, range_end)USAGE:etcdctl del [options] <key> [range_end] [flags]OPTIONS:--from-key[=false] delete keys that are greater than or equal to the given key using byte compare-h, --help[=false] help for del--prefix[=false] delete keys with matching prefix--prev-kv[=false] return deleted key-value pairs--range[=false] delete range of keys
以下是 etcdctl del -h
命令帮助信息的中文翻译::
### 名称:
`put` - 将给定的键值对写入存储中### 用法:
```bash
etcdctl put [选项] <key> <value> (<value> 也可以通过标准输入给出) [标志]
```### 描述:
名称:
del - 移除指定的键或键的范围 [key, range_end)用法:
etcdctl del [选项] <key> [range_end] [标志]选项:--from-key[=false] 删除大于或等于给定键的所有键,使用字节比较。
-h, --help[=false] 显示 del 命令的帮助信息。
--prefix[=false] 删除具有匹配前缀的键。
--prev-kv[=false] 返回已删除的键值对。
--range[=false] 删除一段键的范围。---这个帮助信息提供了 `etcdctl put` 命令的所有选项和详细描述。`put` 命令用于将键值对存储到 `etcd` 中,支持从标准输入获取值,并且可以在命令中使用租约等参数。
二、使用go 客户端删除key
2.1、安装 Go 客户端库
2.2、示例代码
func init() {// 初始化etcd客户端var err errorcli, err = clientv3.New(clientv3.Config{Endpoints: []string{"127.0.0.1:2379"}, // 替换为你的etcd集群地址DialTimeout: 5 * time.Second,})if err != nil {log.Fatal(err)}
}// put 向etcd写入数据
// delKey 删除key
func delKey(key string ) {response, err := cli.Delete(context.Background(), key)if err != nil {log.Fatal(err)}log.Printf("get value by prefix data success,response header is:%s", response.Header.String())
}func main() {defer cli.Close()String key = "/config/db/host";String value = "192.168.1.100";delKey(key, value)
}
三、使用Java客户端删除key
3.1、添加pom依赖
<!-- https://mvnrepository.com/artifact/com.ibm.etcd/etcd-java --><dependency><groupId>com.ibm.etcd</groupId><artifactId>etcd-java</artifactId><version>0.0.24</version></dependency>
3.2、写入数据示例代码
KvStoreClient client = EtcdClient.forEndpoint("localhost", 2379).withPlainText().build();KvClient kvClient = client.getKvClient();LeaseClient leaseClient = client.getLeaseClient();LockClient lockClient = client.getLockClient();// 写入数据String key = "/config/db";String endKey = "/config/dbE";// 以key全匹配方式删除DeleteRangeResponse rangeResponse = kvClient.delete(ByteString.copyFrom(key, StandardCharsets.UTF_8)).sync();// 以key为前缀方式删除//DeleteRangeResponse rangeResponse = kvClient.delete(ByteString.copyFrom(key, StandardCharsets.UTF_8)).asPrefix().sync();// 以key为范围的方式进行删除, 删除从[key,endKey)区间的所有key// DeleteRangeResponse rangeResponse = kvClient.delete(ByteString.copyFrom(key, StandardCharsets.UTF_8)).rangeEnd(ByteString.copyFrom(endKey, StandardCharsets.UTF_8)).sync();System.out.println(rangeResponse);