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

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

etcd API 概览

etcd API 主要分为以下几类:

API 作用
KV 处理键值对的存取(PutGetDelete
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


网站公告

今日签到

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