前边我们已经讲过了什么是 etcd 以及安装方式,这里补充一下,我们配置了 etcd 的环境变量,执行 etcd etcdctl 命令很方便 当我们执行 etcd 命令的时候,你在哪里执行的那么就会在此目录下生成一个 default.etcd 的数据库文件夹里面存放 etcd 的各种数据,这个得要注意哦,千万别傻不愣登的就删除了!

特别提醒:etcd 命令还是比较多的 当然和 redis 来比少多了,这里只是总结了很少一部分 命令行模式 像 curl 模式我没写 大家可以去 www.orchome.com/620 这篇文章当中看到更多精彩的内容

接下来我们记录一下 etcd 的命令的简单操作,这也跟 redis 的学习是一个套路,你得先懂人家的命令啊,然后在用 php 或者 golang 去操作 redis 或者 etcd, 都是一个套路,还是要看手册:etcd.io/docs/v3.4.0/demo/#access-e…找打 access etcd 环节里面各种操作

etcdctl --endpoints=$ENDPOINTS put foo "Hello World!"
此命令当中的 –endpoints-$ENDPOINTS 只有在集群环境当中才会用到目前我们是单机版所以先忽略过去!

put get del命令:
//-------------------------------------------------------
//设置 key为name  value为huxiaobai
etcdctl put name "huxiaobai"
//获取key为name的值
etcdctl get name
//-------------------------------------------------------
//设置前缀名称都为web的key以及value值
etcdctl put web1 value1
etcdctl put web2 value2
etcdctl put web3 value3
//通过前缀批量获取web开头的key的值
etcdctl get web --prefix
//-------------------------------------------------------
//删除key为web1的键值对
etcdctl del web1
//删除一个或者多个前缀为web开头的键值对
etcdctl del web --prefix
//-------------------------------------------------------

txn 事务
txn 从标准输入中读取多个请求,将它们看做一个原子性的事务执行。事务是由条件列表,条件判断成功时的执行列表(条件列表中全部条件为真表示成功)和条件判断失败时的执行列表(条件列表中有一个为假即为失败)组成的。

//先设置上值flag = 1
$ etcdctl put flag 1
OK
//txn事务开始
$ etcdctl txn -i
compares:
value("flag") = "1"
//输入空格确认 我输入了两次
//设置上边验证成功了该怎么办?
success requests (get, put, delete):
//成功了就put设置值
put result true
//设置上边失败了怎么办?
failure requests (get, put, delete):
//失败了也是put值
put result false
SUCCESS
OK
//然后验证
$ etcdctl get result
result
true
解释:
etcdctl put flag 1 设置 flag 为 1
etcdctl txn -i 开启事务(-i 表示交互模式)
第 2 步输入命令后回车,终端显示出 compares:
输入 value (“flag”) = “1”,此命令是比较 flag 的值与 1 是否相等
第 4 步完成后输入回车,终端会换行显示,此时可以继续输入判断条件(前面说过事务由条件列表组成),再次输入回车表示判断条件输入完毕
第 5 步连续输入两个回车后,终端显示出 success requests (get, put, delete):,表示下面输入判断条件为真时要执行的命令
与输入判断条件相同,连续两个回车表示成功时的执行列表输入完成
终端显示 failure requests (get, put, delete): 后输入条件判断失败时的执行列表
为了看起来简洁,此实例中条件列表和执行列表只写了一行命令,实际可以输入多行
总结上面的事务,要做的事情就是 flag 为 1 时设置 resulttrue,否则设置 resultfalse 总结上面的事务,要做的事情就是 flag 为 1 时设置 resulttrue,否则设置 resultfalse
事务执行完成后查看 result 值为 true

watch 监听

watch 后 etcdctl 阻塞,在另一个终端中执行 etcdctl put flag 2 后,watch 会打印出相关信息

$ etcdctl watch flag
PUT
flag
2

lease 租约

etcd 也能为 key 设置超时时间,但与 redis 不同,etcd 需要先创建 lease,然后使用 put 命令加上参数–lease= 来设置

etcdctl lease grant 100
lease 38015a3c00490513 granted with TTL(100s)
etcdctl put k1 v1 --lease=38015a3c00490513
OK
etcdctl lease timetolive 38015a3c00490513
lease 38015a3c00490513 granted with TTL(100s), remaining(67s)
etcdctl lease timetolive 38015a3c00490513
lease 38015a3c00490513 granted with TTL(100s), remaining(64s)
etcdctl lease timetolive 38015a3c00490513 --keys
lease 38015a3c00490513 granted with TTL(100s), remaining(59s), attached keys([k1])
etcdctl put k2 v2 --lease=38015a3c00490513
OK
etcdctl lease timetolive 38015a3c00490513 --keys
lease 38015a3c00490513 granted with TTL(100s), remaining(46s), attached keys([k1 k2])
etcdctl lease revoke 38015a3c00490513 
lease 38015a3c00490513 revoked
etcdctl get k1
etcdctl get k2

etcdctl lease grant 10
lease 38015a3c0049051d granted with TTL(10s)
etcdctl lease keep-alive 38015a3c0049051d
lease 38015a3c0049051d keepalived with TTL(10)
lease 38015a3c0049051d keepalived with TTL(10)
lease 38015a3c0049051d keepalived with TTL(10)

lease grant
创建 lease,返回 lease ID。创建的 lease 生存时间大于或等于 ttl 秒(TODO:为什么可能大于?)
lease revoke
删除 lease,并删除所有关联的 key
lease timetolive
取得 lease 的总时间和剩余时间
lease keep-alive
此命令不会只更新一次 lease 时间,而是周期性地刷新,保证它不会过期。

转自链接:https://learnku.com/articles/48767