在docker中启动etcd
参考 https://etcd.io/docs/v3.5/op-guide/container/
启动后,假定服务监听在192.168.1.21:2379
.
基本示例
range操作通过指定key
和range_end
两个参数,可以实现对key的遍历。这两个参数需要以base64进行编码。
返回结果的key和value也会使用base64编码。
如果key
和range_end
都是\x00
,就会返回所有的key。
\x00
进行base64进行编码如下:
$ echo -ne '\x00'|base64
AA==
获取所有的key:
curl -L http://192.168.1.21:2379/v3/kv/range -X POST \
-d '{"key": "AA==","range_end": "AA=="}'
前缀
如果只想获取某个前缀的所有key,可以在后缀加上 \xff
来设置range_end,如下所示:
# 前缀
$ echo -ne '/some-prefix/'|base64
bmUgL3NvbWUtcHJlZml4Lwo=
# end
$ echo -ne '/some-prefix/\xff'|base64
bmUgL3NvbWUtcHJlZml4L1x4ZmYK
$ curl -L http://192.168.1.21:2379/v3/kv/range -X POST \
-d '{"key": "bmUgL3NvbWUtcHJlZml4Lwo=","range_end": "bmUgL3NvbWUtcHJlZml4L1x4ZmYK"}'
base64 -d 解码打印key
$ curl -L http://192.168.1.21:2379/v3/kv/range -X POST \
-d '{"key": "AA==","range_end": "AA=="}' > res.json
$ cat res.json |jq '.kvs|.[]|.key' -r|xargs -I {} bash -c 'echo {}|base64 -d;echo '