键值数据
除了 服务发现 和 健康检查 ,Consul 还提供一个易于使用的 KV 存储。这可以用来存储动态配置、辅助服务协调、构建领袖选举等,甚至做任何开发人员能够想到的事情。
简明用法
KV 存储更容易入门,接下来我们创建几个键值来演示一下。与 Consul键值存储 打交道有两种不同方式: HTTP 接口或者 命令行接口 ( CLI )。下面的例子使用 命令行接口 进行,因为这样更为方便。更高级的集成,可以参考 Consul KV HTTP API文档 。
先 查询 给定 键 ( key ) redis/config/minconns
对应的 值 ( value ):
$ consul kv get redis/config/minconns
Error! No key exists at: redis/config/minconns
可以看到,我们没有得到任何结果,因为该键根本没有存储任何值。接着,我们往存储 插入 一些键值:
$ 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
Consul 也可以返回额外的 元数据 ,指定 -detailed
参数即可:
$ 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
键上,我们存储了一个值为 42 的 标识 ( flag )。Consul 支持 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
第一个更新操作成功因为记录索引刚好是 123 ,第二次则失败因为索引不再是 123 了。
下一步
由于篇幅关系,我们只介绍了若干个操作接口,完整接口可以查看文档:
下一节,我们介绍: Web UI 。
订阅更新,获取更多学习资料,请关注我们的 微信公众号 :