命令
启动
./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)
}