首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与领事锁定KV

与领事锁定KV
EN

Stack Overflow用户
提问于 2017-09-20 19:21:14
回答 1查看 1.9K关注 0票数 4

我试图在领事上获得一个KV对的锁,同时更新它,所以没有其他人可以更新它。

一开始我有

代码语言:javascript
复制
curl -XGET http://localhost:8500/v1/kv/hosts?raw
{"k1":"v1"}

现在我有一段时间

代码语言:javascript
复制
curl -XPUT http://localhost:8500/v1/session/create
{"ID":"9ed55585-ddda-4605-a926-d1e0b57a9919"}

然后我获得了KV的锁。

代码语言:javascript
复制
curl -XPUT http://localhost:8500/v1/kv/hosts?acquire=9ed55585-ddda-4605-a926-d1e0b57a9919

现在,当我发布并执行一个GET时,我的值是空的。

代码语言:javascript
复制
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

我是不是做错什么了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-16 05:24:14

您什么也没有得到,因为您的没有发送任何数据在您的PUT请求中写入到kv存储。

下面是同样的命令,带有一些漂亮的打印。

创建会话

代码语言:javascript
复制
 curl --request PUT http://localhost:8500/v1/session/create
 {"ID":"3619d9fd-8b8f-0b89-acdf-8d752b38a754"}

编写值

使用Linux的“这里文件”,我将在host键下写出"Hello,World“的值。记住使用从前面的命令中得到的会话ID。将3行复制/粘贴为一个单元。

代码语言:javascript
复制
curl --request PUT http://localhost:8500/v1/kv/host?acquire=3619d9fd-8b8f-0b89-acdf-8d752b38a754 --data @- << EOF
Hello, World
EOF

读取返回的值

读书只是一种收获,我用管道向一台漂亮的打印机走去。

代码语言:javascript
复制
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是我们第一次写的数据

代码语言:javascript
复制
echo "SGVsbG8sIFdvcmxk" | openssl base64 -d -A
Hello, World

试图在没有锁的情况下写入值

这不像你想的那样。K/V文件

即使另一个会话锁定了密钥,不包含获取参数的更新也将正常进行。

删除会话

您可以将TTL设置为会话并等待其过期,但让我们删除它。

代码语言:javascript
复制
curl --request PUT http://localhost:8500/v1/session/destroy/3619d9fd-8b8f-0b89-acdf-8d752b38a754

该值仍然存在,但不再与会话相关联:

代码语言:javascript
复制
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"

代码语言:javascript
复制
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"}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46330209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档