键值数据存储
这一章假设你已经有至少一个Consul的agent在运行.
为了演示如果简单的使用键值存储.我们将操作一些键.查询本地agent我们首先确认现在还没有存储任何key.
因为没有key所以我们得到了一个404响应.现在我们一些示例的Key:
[root@hdp3 consul.d]# curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key1
[root@hdp3 consul.d]# curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key2?flags=42
[root@hdp3 consul.d]# curl http://localhost:8500/v1/kv/?recurse
[{"LockIndex":0,"Key":"web/key1","Flags":0,"Value":"dGVzdA==","CreateIndex":1201,"ModifyIndex":1201},{"LockIndex":0,"Key":"web/key2","Flags":42,"Value":"dGVzdA==","CreateIndex":1205,"ModifyIndex":1206},{"LockIndex":0,"Key":"web/sub/key3","Flags":0,"Value":"dGVzdA==","CreateIndex":1217,"ModifyIndex":1217}]
完成设置后,我们发起了一个GET
请求来接收多个key的值,使用?recurse
参数.
你可以获取单个的key
删除key也很简单.通过DELETE
动作来完成.我们可以通过指定完整路径来删除一个单独的key.或者我们可以使用?recurse
递归的删除主路径下所有key.
true
[{"LockIndex":0,"Key":"web/key1","Flags":0,"Value":"dGVzdA==","CreateIndex":1201,"ModifyIndex":1201},{"LockIndex":0,"Key":"web/key2","Flags":42,"Value":"dGVzdA==","CreateIndex":1205,"ModifyIndex":1206}]
在这种情况下,第一次CAS
更新成功因为ModifyIndex
是1201
.而第二次失败是因为ModifyIndex
在第一次更新后已经不是了 .
我们也可以使用ModifyIndex
来等待key值的改变.例如我们想等待key2
被修改:
[root@hdp3 consul.d]# curl http://localhost:8500/v1/kv/web/key2
[{"LockIndex":0,"Key":"web/key2","Flags":42,"Value":"dGVzdA==","CreateIndex":1205,"ModifyIndex":1206}]
[{"LockIndex":0,"Key":"web/key2","Flags":42,"Value":"dGVzdA==","CreateIndex":1205,"ModifyIndex":1206}]
通过提供 ?index=
,我们请求等待key值有一个比1206
更大的ModifyIndex
.虽然?wait=5s
参数限制了这个请求最多5秒,否则返回当前的未改变的值. 这样可以有效的等待key的改变.另外,这个功能可以用于等待一组key.直到其中的某个key有修改.
下一步
下面我们将看一看Consul支持的WebUI选项.