我试图在领事上获得一个KV对的锁,同时更新它,所以没有其他人可以更新它。
一开始我有
curl -XGET http://localhost:8500/v1/kv/hosts?raw
{"k1":"v1"}现在我有一段时间
curl -XPUT http://localhost:8500/v1/session/create
{"ID":"9ed55585-ddda-4605-a926-d1e0b57a9919"}然后我获得了KV的锁。
curl -XPUT http://localhost:8500/v1/kv/hosts?acquire=9ed55585-ddda-4605-a926-d1e0b57a9919现在,当我发布并执行一个GET时,我的值是空的。
curl -XPUT http://localhost:8500/v1/kv/hosts?release=9ed55585-ddda-4605-a926-d1e0b57a9919
curl -XGET http://localhost:8500/v1/kv/hosts?raw => This returns empty我是不是做错什么了。
发布于 2018-11-16 05:24:14
您什么也没有得到,因为您的没有发送任何数据在您的PUT请求中写入到kv存储。
下面是同样的命令,带有一些漂亮的打印。
创建会话
curl --request PUT http://localhost:8500/v1/session/create
{"ID":"3619d9fd-8b8f-0b89-acdf-8d752b38a754"}编写值
使用Linux的“这里文件”,我将在host键下写出"Hello,World“的值。记住使用从前面的命令中得到的会话ID。将3行复制/粘贴为一个单元。
curl --request PUT http://localhost:8500/v1/kv/host?acquire=3619d9fd-8b8f-0b89-acdf-8d752b38a754 --data @- << EOF
Hello, World
EOF读取返回的值
读书只是一种收获,我用管道向一台漂亮的打印机走去。
curl -s http://localhost:8500/v1/kv/host| python -m json.tool
[
{
"CreateIndex": 3832257,
"Flags": 0,
"Key": "host",
"LockIndex": 1,
"ModifyIndex": 3832260,
"Session": "3619d9fd-8b8f-0b89-acdf-8d752b38a754",
"Value": "SGVsbG8sIFdvcmxk"
}
]base64 blob是我们第一次写的数据
echo "SGVsbG8sIFdvcmxk" | openssl base64 -d -A
Hello, World试图在没有锁的情况下写入值
这不像你想的那样。K/V文件说
即使另一个会话锁定了密钥,不包含获取参数的更新也将正常进行。
删除会话
您可以将TTL设置为会话并等待其过期,但让我们删除它。
curl --request PUT http://localhost:8500/v1/session/destroy/3619d9fd-8b8f-0b89-acdf-8d752b38a754该值仍然存在,但不再与会话相关联:
curl -s http://localhost:8500/v1/kv/host| python -m json.tool
[
{
"CreateIndex": 3832257,
"Flags": 0,
"Key": "host",
"LockIndex": 0,
"ModifyIndex": 3832331,
"Value": "SGVsbG8sIFdvcmxk"
}
]如果希望在会话到期或删除时删除密钥,则在创建会话时指定"Behavior": "delete"。
curl --request PUT http://localhost:8500/v1/session/create --data @- << EOF
{
"Name": "Helps with debugging",
"Behavior": "delete",
"TTL": "2m"
}
EOF
{"ID":"45c17b06-b632-d17f-b0af-b2bee8f82511"}https://stackoverflow.com/questions/46330209
复制相似问题