1.4.6 Key/Value Data

除了提供服务发现和健康检测,Consul 还提供了一种简单的方法使用 K/V 存储。可以用来存储动态配置、服务协作、选主以及很多有趣的事情。

使用 K/V 存储之前需要保证有一个 agent 在运行。

简单用法

我们下面演示一下如何使用 K/V 存储,很简单。K/V 存储提供了两种方式:HTTP API 和 Consul KV cli。下面演示如何使用 cli。关于 HTTP API 可以参考 Agent 那一章。

我们先请求路径 redis/config/mincons 下面的 key 的值。

$ consul kv get redis/config/minconns
Error! No key exists at: redis/config/minconns

如你所见,没有得到结果。因为我们还没有存放数据。下面我们使用 put 命令存数据。

$ 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 还记录了 key 的其他元数据,可以通过 -detailed 参数查看。

$ consul kv get -detailed redis/config/minconns
CreateIndex      207
Flags            0
Key              redis/config/minconns
LockIndex        0
ModifyIndex      207
Session          -
Value            1

比如参数 flag,client 可以自定义一些有意义的值。

通过选项 recurse,我们可以列出所有的 key/value。结果以字典序排列。

$ consul kv get -recurse
redis/config/maxconns:25
redis/config/minconns:1
redis/config/users/admin:abcd1234

删除

$ consul kv delete redis/config/minconns
Success! Deleted key: redis/config/minconns

通过选项 recurse 选项可以删除共同前缀的所有 key。

$ consul kv delete -recurse redis
Success! Deleted keys with prefix: redis

更新操作可以通过 put 新 value 实现。

$ consul kv put foo bar

$ consul kv get foo
bar

$ consul kv put foo zip

$ consul kv get foo
zip

Consul 支持 key 的原子更新,使用 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。

下一步

我们这里只是简单列了几个例子,更详细的信息请参考 K/V CLI

下一节,我们会介绍一下 Consul 的 web UI。

results matching ""

    No results matching ""