consul只key/value存儲
除了提供服務發現和綜合健康檢查,Consul還提供了一個易於使用的鍵/值存儲。這可以用來保存動態配置,協助服務協調,建立領導人選舉,並啟用其他開發人員可以想構建的任何其他內容。
有兩種方法可以使用:通過HTTP API和通過CLI API。下面的例子顯示使用CLI API
D:\soft\worksoft\consul_1.0.6_windows_amd64>consul kv get redis/config/minconns Error! No key exists at: redis/config/minconns
你將看到沒有結果返回,由於KV存儲中沒有該鍵返回了一個錯誤,接下來我們將插入或”put”一個值到KV存儲中。
D:\soft\worksoft\consul_1.0.6_windows_amd64>consul kv put redis/config/minconns 1 Success! Data written to: redis/config/minconns
現在再次查詢該鍵你將看到如下結果:
D:\soft\worksoft\consul_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存儲