【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据

在分布式系统中,etcd 是一个高可用的键值存储,用于存储和共享配置信息、服务发现、协调等。向 etcd 写入数据可以通过多种方式进行,常见的方式是使用 etcd 提供的 HTTP API 或者通过客户端库来进行操作。

目录

一、使用EtcdCtl工具来写入数据

1.1、设置环境变量(可选)
cmd 复制代码
export ETCDCTL_API=3
export ETCDCTL_ENDPOINTS=http://localhost:2379
1.2、使用etcdctl put写入数据
cmd 复制代码
etcdctl put <key> <value>
etcdctl put /config/db/host "192.168.1.100"
1.3、通过etcdctl put -h来查看相关帮助信息
cmd 复制代码
etcdctl put -h
NAME:
	put - Puts the given key into the store

USAGE:
	etcdctl put [options] <key> <value> (<value> can also be given from stdin) [flags]

DESCRIPTION:
	Puts the given key into the store.
	
	When <value> begins with '-', <value> is interpreted as a flag.
	Insert '--' for workaround:
	
	$ put <key> -- <value>
	$ put -- <key> <value>
	
	If <value> isn't given as a command line argument and '--ignore-value' is not specified,
	this command tries to read the value from standard input.
	
	If <lease> isn't given as a command line argument and '--ignore-lease' is not specified,
	this command tries to read the value from standard input.
	
	For example,
	$ cat file | put <key>
	will store the content of the file to <key>.

以下是 etcdctl put -h 命令帮助信息的中文翻译::

cmd 复制代码
---

### 名称:
`put` - 将给定的键值对写入存储中

### 用法:
​```bash
etcdctl put [选项] <key> <value> (<value> 也可以通过标准输入给出) [标志]
​```

### 描述:
将给定的键值对写入存储中。

- 当 `<value>` 以 `-` 开头时,`<value>` 会被解释为一个标志。
  - 使用 `--` 进行工作区处理:
  
    ```bash
    $ put <key> -- <value>
    $ put -- <key> <value>
    ```

- 如果没有通过命令行参数给出 `<value>` 且没有指定 `--ignore-value`,该命令会尝试从标准输入读取值。

- 如果没有通过命令行参数给出 `<lease>` 且没有指定 `--ignore-lease`,该命令会尝试从标准输入读取租约。

  例如:
  
  ```bash
  $ cat file | put <key>

这条命令会将文件的内容存储到 <key> 中。

选项:

  • -h, --help[=false] 显示 put 命令的帮助信息
  • --ignore-lease[=false] 使用当前的租约更新键值对
  • --ignore-value[=false] 使用当前的值更新键值对
  • --lease="0" 租约 ID(十六进制格式),将其附加到键值对
  • --prev-kv[=false] 在修改前返回之前的键值对

这个帮助信息提供了 etcdctl put 命令的所有选项和详细描述。put 命令用于将键值对存储到 etcd 中,支持从标准输入获取值,并且可以在命令中使用租约等参数。

复制代码
### 二、使用go 客户端写入数据

#### 2.1、安装 Go 客户端库

#### 2.2、示例代码

```go
func init() {
	// 初始化etcd客户端
	var err error
	cli, 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写入数据
func put(key, value string) {
	response, err := cli.Put(context.Background(), key, value)
	if err != nil {
		log.Fatal(err)
	}
	log.Printf("write 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";
	put(key, value)
}

三、使用Java客户端写入数据

3.1、添加pom依赖
xml 复制代码
        <!-- 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、写入数据示例代码
java 复制代码
        KvStoreClient client = EtcdClient.forEndpoint("localhost", 2379).withPlainText().build();


        KvClient kvClient = client.getKvClient();
        LeaseClient leaseClient = client.getLeaseClient();
        LockClient lockClient = client.getLockClient();
        // 写入数据
        String key = "/config/db/host";
        String value = "192.168.1.100";
        PutResponse result = kvClient.put(ByteString.copyFrom(key, StandardCharsets.UTF_8), ByteString.copyFrom(value, StandardCharsets.UTF_8)).sync();
        System.out.println(result);
相关推荐
一枚正在学习的小白3 分钟前
PG数据文件位置迁移
linux·运维·服务器·数据库
Harriet嘉13 分钟前
解决Chrome 140以上版本“此扩展程序不再受支持,因此已停用”问题 axure插件安装问题
前端·chrome
真的想不出名儿19 分钟前
上传头像到腾讯云对象存储-前端基于antdv
java·数据库·腾讯云
Dreams_l30 分钟前
初识redis(分布式系统, redis的特性, 基本命令)
数据库·redis·缓存
数据库知识分享者小北31 分钟前
Qoder + ADB Supabase :5分钟GET超火AI手办生图APP
数据库·后端
点亮一颗LED(从入门到放弃)1 小时前
SQLite3数据库——Linux应用
linux·数据库·sqlite
济南java开发,求内推2 小时前
mongodb一个服务器部署多个节点
服务器·数据库·mongodb
武子康2 小时前
Java-148 深入浅出 MongoDB 聚合操作:$match、$group、$project、$sort 全面解析 Pipeline 实例详解与性能优化
java·数据库·sql·mongodb·性能优化·系统架构·nosql
程序猿(雷霆之王)2 小时前
MySQL——复合查询
数据库·mysql
IT 小阿姨(数据库)3 小时前
PostgreSQL etcd 集群介绍
运维·数据库·sql·postgresql·centos·etcd