键值数据存储

    这一章假设你已经有至少一个Consul的agent在运行.

    为了演示如果简单的使用键值存储.我们将操作一些键.查询本地agent我们首先确认现在还没有存储任何key.

    因为没有key所以我们得到了一个404响应.现在我们一些示例的Key:

    1. [root@hdp3 consul.d]# curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key1
    2. [root@hdp3 consul.d]# curl -X PUT -d 'test' http://localhost:8500/v1/kv/web/key2?flags=42
    3. [root@hdp3 consul.d]# curl http://localhost:8500/v1/kv/?recurse
    4. [{"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.

    1. true
    2. [{"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 更新成功因为ModifyIndex1201.而第二次失败是因为ModifyIndex在第一次更新后已经不是了 .

    我们也可以使用ModifyIndex来等待key值的改变.例如我们想等待key2被修改:

    1. [root@hdp3 consul.d]# curl http://localhost:8500/v1/kv/web/key2
    2. [{"LockIndex":0,"Key":"web/key2","Flags":42,"Value":"dGVzdA==","CreateIndex":1205,"ModifyIndex":1206}]
    3. [{"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选项.