【etcd】etcd_APIs 简单KV、watch、lease、txn命令

发布于:2025-02-17 ⋅ 阅读:(310) ⋅ 点赞:(0)

etcd API 概览

etcd API 主要分为以下几类:

API 作用
KV 处理键值对的存取(Put、Get、Delete)
Watch 监听 etcd 中键值的变化
Lease 通过租约(Lease)设置数据的过期时间
Txn(事务) 事务操作,支持多个操作的原子执行
Auth 用户权限管理(添加用户、角色、授权等)
Cluster 管理 etcd 集群节点
Maintenance 维护 etcd(查看状态、快照、清理数据等)
Lock 分布式锁

在 etcd 中,kv(键值操作)、watch(监听)、lease(租约)和 txn(事务)是核心功能。以下是这些功能的 etcd 原生命令 的详细讲解,包括命令的用法和示例。


1. KV(键值操作)

1.1 设置键值对 (put)

用于设置或更新键值对。

命令格式
etcdctl put <key> <value> [选项]
示例
etcdctl put /config/database/host localhost
  • 设置键 /config/database/host 的值为 localhost。
常用选项
  • --lease:为键绑定租约。
    etcdctl put /config/database/host localhost --lease=1234abcd
    

1.2 获取键值对 (get)

用于获取键的值。

命令格式
etcdctl get <key> [选项]
示例
etcdctl get /config/database/host
  • 获取键 /config/database/host 的值。
常用选项
  • --prefix:获取指定前缀的所有键。
    etcdctl get /config/ --prefix
    
  • --limit:限制返回的键值对数量。
    etcdctl get /config/ --prefix --limit=2
    

1.3 删除键值对 (del)

用于删除键值对。

命令格式
etcdctl del <key> [选项]
示例
etcdctl del /config/database/host
  • 删除键 /config/database/host。
常用选项
  • --prefix:删除指定前缀的所有键。
    etcdctl del /config/ --prefix
    

2. Watch(监听)

2.1 监听键的变化 (watch)

用于监听键的变化。

命令格式
etcdctl watch <key> [选项]
示例
etcdctl watch /config/database/host
  • 监听键 /config/database/host 的变化。
常用选项
  • --prefix:监听指定前缀的所有键。
    etcdctl watch /config/ --prefix
    

3. Lease(租约)

3.1 创建租约 (lease grant)

用于创建一个租约。

命令格式
etcdctl lease grant <TTL>
示例
etcdctl lease grant 60
  • 创建一个 TTL 为 60 秒的租约。
输出
lease 1234abcd granted with TTL(60s)
  • 1234abcd 是租约 ID。

3.2 绑定键到租约 (put --lease)

将键绑定到租约。

示例
etcdctl put /config/database/host localhost --lease=1234abcd
  • 将键 /config/database/host 绑定到租约 1234abcd。

3.3 续约 (lease keep-alive)

用于续约,防止租约过期。

命令格式
etcdctl lease keep-alive <lease_id>
示例
etcdctl lease keep-alive 1234abcd
  • 续约租约 1234abcd。

3.4 撤销租约 (lease revoke)

用于撤销租约,绑定的键会被删除。

命令格式
etcdctl lease revoke <lease_id>
示例
etcdctl lease revoke 1234abcd
  • 撤销租约 1234abcd。

4. Txn(事务)

4.1 执行事务 (txn)

用于执行事务操作。

命令格式
etcdctl txn [选项]
示例 也可以etcdctl txn -i 启动交互式命令行
etcdctl txn <<EOF
compare:
  value("/config/database/host") = "localhost"
success:
  put /config/database/host "127.0.0.1"
failure:
  put /config/database/host "unknown"
EOF
  • 如果 /config/database/host 的值是 localhost,则将其改为 127.0.0.1,否则改为 unknown。

5. 综合示例

5.1 设置键值对并绑定租约

# 创建租约
etcdctl lease grant 60

# 绑定键到租约
etcdctl put /config/database/host localhost --lease=1234abcd

5.2 监听键的变化

# 监听键
etcdctl watch /config/database/host

5.3 执行事务

# 事务操作
etcdctl txn <<EOF
compare:
  value("/config/database/host") = "localhost"
success:
  put /config/database/host "127.0.0.1"
failure:
  put /config/database/host "unknown"
EOF

6. 总结

功能 命令 用途 示例
KV put 设置键值对 etcdctl put /key value
get 获取键值对 etcdctl get /key
del 删除键值对 etcdctl del /key
Watch watch 监听键的变化 etcdctl watch /key
Lease lease grant 创建租约 etcdctl lease grant 60
put --lease 绑定键到租约 etcdctl put /key value --lease=1234abcd
lease keep-alive 续约 etcdctl lease keep-alive 1234abcd
lease revoke 撤销租约 etcdctl lease revoke 1234abcd
Txn txn 执行事务 etcdctl txn <事务条件>

https://github.com/0voice


微信公众号

今日签到

点亮在社区的每一天
去签到