consul只key/value存储
Posted duanxz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了consul只key/value存储相关的知识,希望对你有一定的参考价值。
除了提供服务发现和综合健康检查,Consul还提供了一个易于使用的键/值存储。这可以用来保存动态配置,协助服务协调,建立领导人选举,并启用其他开发人员可以想构建的任何其他内容。
有两种方法可以使用:通过HTTP API和通过CLI API。下面的例子显示使用CLI API
D:softworksoftconsul_1.0.6_windows_amd64>consul kv get redis/config/minconns Error! No key exists at: redis/config/minconns
你将看到没有结果返回,由于KV存储中没有该键返回了一个错误,接下来我们将插入或”put”一个值到KV存储中。
D:softworksoftconsul_1.0.6_windows_amd64>consul kv put redis/config/minconns 1 Success! Data written to: redis/config/minconns
现在再次查询该键你将看到如下结果:
D:softworksoftconsul_1.0.6_windows_amd64>consul kv get redis/config/minconns 1
在web UI上可以看到用CLI API创建的key
在web UI上创建一个“duan”的key:
再通过CLI API查询结果:
Consul保留额外的元数据在该字段,你可以使用-detailed标志检索详细信息:
root@server1:~# consul kv get -detailed redis/config/minconns
CreateIndex 1049
Flags 0
Key redis/config/minconns
LockIndex 0
ModifyIndex 1049
Session -
Value 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
设置值的时候,还可以使用-flags标志
- -flags=<uint>
Unsigned integer value to assign to this key-value pair. This value
is not read by Consul, so clients can use this value however makes sense
for their use case. The default value is 0 (no flags).
flags用来做客户端自定义标志,consul并不使用它,你可以在你自己的程序中随便定义
root@server1:~# consul kv put -flags=42 redis/config/users/admin abcd1234
Success! Data written to: redis/config/users/admin
- 1
- 2
设置flag值为42,想设置成什么就设置成什么.所有的键都支持设置一个64位的整型值。
使用-recurse选项可以列出KV存储中所有keys,返回的结果将按照字母排序。
root@server1:~# consul kv get -recurse
redis/config/minconns:1
redis/config/users/admin:abcd1234
- 1
- 2
- 3
使用delete命令删除KV存储中指定的key。
root@server1:~# consul kv delete redis/config/minconns
Success! Deleted key: redis/config/minconns
- 1
- 2
还可以使用recurse选项递归选项删除含某个前缀的所有keys:
root@server1:~# consul kv delete -recurse redis
Success! Deleted keys with prefix: redis
- 1
- 2
如果要更新一个存在键的值,可以put一个新值在同样的路径上。
root@server1:~# consul kv put foo bar
Success! Data written to: foo
root@server1:~# consul kv get foo
bar
root@server1:~# consul kv put foo zip
Success! Data written to: foo
root@server1:~# consul kv get foo
zip
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Consul可以使用Check_And_Set提供原子键更新操作。执行CAS操作时需指定-cas标志。至于什么是CAS,请自行百度吧
- -modify-index=<uint>
Unsigned integer representing the ModifyIndex of the key. This is used in combination with the -cas flag.
首先查询foo这个key的详细信息
root@server1:~# consul kv get -detailed foo
CreateIndex 1065
Flags 0
Key foo
LockIndex 0
ModifyIndex 1067
Session -
Value zip
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
看到foo的索引编号ModifyIndex是1067。然后使用CAS操作的方式来修改它
root@server1:~# consul kv put -cas -modify-index=1067 foo bar
Success! Data written to: foo
- 1
- 2
修改成功,再查询
root@server1:~# consul kv get -detailed foo
CreateIndex 1065
Flags 0
Key foo
LockIndex 0
ModifyIndex 1091
Session -
Value bar
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
ModifyIndex变成1091了。依然使用上面那个修改命令试试
root@server1:~# consul kv put -cas -modify-index=1067 foo bar
Error! Did not write to foo: CAS failed
- 1
- 2
失败了。原因是第一次CAS操作成功,因为ModifyIndex的值是1067,我们输入的也是-modify-index=1067。
第二次操作失败,ModifyIndex已经变成1091了,我们还用-modify-index=1067,Check_And_SetS中的Check这步就失败了,不会再Set了。
以上是关于consul只key/value存储的主要内容,如果未能解决你的问题,请参考以下文章