etcd命令和API

本文档详述了如何使用etcd v3进行各种操作,包括启动etcdctl、查询集群成员和节点状态、监听key变化、增删改查key、申请与管理租约、以及使用核心API如KV、Watch和Lease等。通过具体命令演示了etcd的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

命令

启动

./etcdctl

使用etcd v3
export ETCDCTL_API=3 set ETCDCTL_API=3

查询集群成员
./etcdctl member list

查询节点状态
./etcdctl --endpoints localhost:2379 endpoint status --write-out="table"

监听一个key

./etcdctl watch /key/test

增删改查key

./etcdctl put /key/test 11
OK

./etcdctl get /key/test
/key/test
11

./etcdctl put /key/test 22
OK

./etcdctl get /key/test

./etcdctl get /key/test
/key/test
22

etcdctl del  /key/test
1

#删除所有/key 前缀的节点
etcdctl del  /key --prefix

租约

申请租约,从申请开始计算时间

λ ./ettcdctl lease grant 30
lease 694d6e1b7f77f40b granted with TTL(30s)

授权租约,节点的生命伴随着租约到期将会被DELETE

λ ./etcdctl put --lease=694d6e1b7f77f40b /key/leasetest "leasetest"
OK

撤销租约,撤销租约和租约到期一样,节点都会被删除

./etcdctl lease revoke 4e5e5b853f5286cc
lease 4e5e5b853f5286cc revoked

租约续约,每当到期将会续约

./etcdctl lease keep-alive 4e5e5b853f52892b
lease 694d6e1b7f77f40b keepalived with TTL(40)
lease 694d6e1b7f77f40b keepalived with TTL(40)

核心API

KV:键值相关操作

对外提供的接口:

type KV interface {
    // 存放.
    Put(ctx context.Context, key, val string, opts ...OpOption) (*PutResponse, error)
    // 获取.
    Get(ctx context.Context, key string, opts ...OpOption) (*GetResponse, error)
    // 删除.
    Delete(ctx context.Context, key string, opts ...OpOption) (*DeleteResponse, error)
    // 压缩rev指定版本之前的历史数据.
    Compact(ctx context.Context, rev int64, opts ...CompactOption) (*CompactResponse, error)
    // 通用的操作执行命令,可用于操作集合的遍历。Put/Get/Delete也是基于Do.
    Do(ctx context.Context, op Op) (OpResponse, error)
    // 创建一个事务,只支持If/Then/Else/Commit操作.
    Txn(ctx context.Context) Txn
}

Watch:观察者模式,监听数据变化

对外提供的接口:

type Watcher interface {
    // 监视key的变化,返回变化的结果
    Watch(ctx context.Context, key string, opts ...OpOption) WatchChan
    // 关闭所有监视器
    Close() error
}

Lease:租约相关操作

对外提供的接口:

type Lease interface {
    // 分配一个租约.
    Grant(ctx context.Context, ttl int64) (*LeaseGrantResponse, error)
    // 释放一个租约.
    Revoke(ctx context.Context, id LeaseID) (*LeaseRevokeResponse, error)
    // 获取剩余TTL时间.
    TimeToLive(ctx context.Context, id LeaseID, opts ...LeaseOption) (*LeaseTimeToLiveResponse, error)
    // 获取所有租约.
    Leases(ctx context.Context) (*LeaseLeasesResponse, error)
    // 续约保持激活状态.
    KeepAlive(ctx context.Context, id LeaseID) (<-chan *LeaseKeepAliveResponse, error)
    // 仅续约激活一次.
    KeepAliveOnce(ctx context.Context, id LeaseID) (*LeaseKeepAliveResponse, error)
    // 关闭续约激活的功能.
    Close() error
}

Cluster:集群管理相关操作

对外提供的接口:

type Cluster interface {
    // 列出集群所有成员.
    MemberList(ctx context.Context) (*MemberListResponse, error)
    // 添加新成员到集群中.
    MemberAdd(ctx context.Context, peerAddrs []string) (*MemberAddResponse, error)
    // 移除一个集群中的成员.
    MemberRemove(ctx context.Context, id uint64) (*MemberRemoveResponse, error)
    // 更新一个集群成员的地址.
    MemberUpdate(ctx context.Context, id uint64, peerAddrs []string) (*MemberUpdateResponse, error)        
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值