为了演示它的易用性,我们使用若干个键。有两种方法可以访问 Consul KV 存储:通过 HTTP API 或者 Consul KV CLI。下面展示了通过 Consul KV CLI 的使用方法。进阶集成方案参见 Consul KV HTTP API。
首先来看看 KV 存储的样子,来问问 Consul 这个键的值吧:
$ consul kv get redis/config/minconns
Error! No key exists at: redis/config/minconns
可见,由于 KV 存储里什么都没有,这个查询也没有结果。我们可以插入一些键值对进来:
$ consul kv put redis/config/minconns 1
Success! Data written to: redis/config/minconns
$ consul kv put redis/config/maxconns 25
Success! Data written to: redis/config/maxconns
$ consul kv put -flags=42 redis/config/users/admin abcd1234
Success! Data written to: redis/config/users/admin
现在我们有了一些键,来查查看:
$ consul kv get redis/config/minconns
1
用 -detailed 标识可以获取 Consul 保存的详细元数据:
$ consul kv get -detailed redis/config/minconns
CreateIndex 207
Flags 0
Key redis/config/minconns
LockIndex 0
ModifyIndex 207
Session -
Value 1
对于 redis/config/users/admin 这个键我们设置了 flag 为 42。所有键都支持一个 64 位整数的标志位,它不用于 Consul 内部处理,但可以被客户端读取并赋予新的涵义。
通过 -recurse 选项可以递归查询子键,结果按字典序排列:
$ consul kv get -recurse
redis/config/maxconns:25
redis/config/minconns:1
redis/config/users/admin:abcd1234
用 delete 可以删除一个键值对:
$ consul kv delete redis/config/minconns
Success! Deleted key: redis/config/minconns
也可以用 -recurse 选项递归删除子键:
$ consul kv delete -recurse redis
Success! Deleted keys with prefix: redis
要更新一个值,用 put 即可:
$ consul kv put foo bar
$ consul kv get foo
bar
$ consul kv put foo zip
$ consul kv get foo
zip
Consul 可以原子性地进行检查并设置(Check-And-Set)操作,用 -cas 标识:
$ consul kv put -cas -modify-index=123 foo bar
Success! Data written to: foo
$ consul kv put -cas -modify-index=123 foo bar
Error! Did not write to foo: CAS failed
如上,第一个 CAS 更新成功了,因为 index 是 123。第二个则失败了,因为此时的 index 不再是 123 了。