Haskell Riak 客户端中地图的 CRDT 操作
CRDT ops for Map in Haskell Riak client
如何创建一个包含 Register
名称 username
和值 test
的简单 Riak CRDT Map
?我正在看这个 documentation here 但不明白 XPath
和地图中寄存器的名称是如何连接的。
这是我想要做的:create/update Map
具有 Register
名称 username
和值 test
(在桶类型 mapbucket
、存储桶 uinfo
、密钥 test1
)。这是 Erlang 客户端将如何执行此操作(未测试 - 从我编写的另一个代码修改复制粘贴):
Map = riakc_map:new(),
Map1 = riakc_map:update({<<"username">>, register},
fun(R) -> riakc_register:set(<<"test">>, R) end,
Map),
{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087),
riakc_pb_socket:update_type(Pid,{<<"mapbucket">>,<<"uinfo">>},"test1",riakc_map:to_op(Map1))
我搜索了 github 代码存储库,但在 Haskell Riak 客户端中找不到任何示例。如果任何熟悉 Haskell Riak 客户端和 CRDT
ops 的人可以提供有关如何执行上述操作的指示,我将不胜感激。
我知道怎么做了。 Map
中的 xpath
似乎是一个递归选择器,用于访问深埋在地图中另一个地图中的字段。因此,对于地图中的顶级字段,xpath
将只是该字段名。于是,解变成:
-- get the connection to 127.0.0.1:8087
conn <- connect defaultClient
-- xpath here is just "username" fieldname - we use RegisterSet operation
-- Alternatively, for xpath value, you can do: ("username" :| []), especially, if
-- passing it as argument in a function
let op = "username" `mapUpdate` RegisterSet "test"
-- send off the above operation to create/update the map
sendModify conn "mapbucket" "uinfo" "test1" [op]
如何创建一个包含 Register
名称 username
和值 test
的简单 Riak CRDT Map
?我正在看这个 documentation here 但不明白 XPath
和地图中寄存器的名称是如何连接的。
这是我想要做的:create/update Map
具有 Register
名称 username
和值 test
(在桶类型 mapbucket
、存储桶 uinfo
、密钥 test1
)。这是 Erlang 客户端将如何执行此操作(未测试 - 从我编写的另一个代码修改复制粘贴):
Map = riakc_map:new(),
Map1 = riakc_map:update({<<"username">>, register},
fun(R) -> riakc_register:set(<<"test">>, R) end,
Map),
{ok, Pid} = riakc_pb_socket:start_link("127.0.0.1", 8087),
riakc_pb_socket:update_type(Pid,{<<"mapbucket">>,<<"uinfo">>},"test1",riakc_map:to_op(Map1))
我搜索了 github 代码存储库,但在 Haskell Riak 客户端中找不到任何示例。如果任何熟悉 Haskell Riak 客户端和 CRDT
ops 的人可以提供有关如何执行上述操作的指示,我将不胜感激。
我知道怎么做了。 Map
中的 xpath
似乎是一个递归选择器,用于访问深埋在地图中另一个地图中的字段。因此,对于地图中的顶级字段,xpath
将只是该字段名。于是,解变成:
-- get the connection to 127.0.0.1:8087
conn <- connect defaultClient
-- xpath here is just "username" fieldname - we use RegisterSet operation
-- Alternatively, for xpath value, you can do: ("username" :| []), especially, if
-- passing it as argument in a function
let op = "username" `mapUpdate` RegisterSet "test"
-- send off the above operation to create/update the map
sendModify conn "mapbucket" "uinfo" "test1" [op]