etcd套路(四)命令操作演示

前边我们已经讲过了什么是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时设置result为true,否则设置result为false总结上面的事务,要做的事情就是flag为1时设置result为true,否则设置result为false
事务执行完成后查看result值为true

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

$ etcdctl watch flag
PUT
flag
2

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

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
胡军
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!