1

在 Riak 的服务器端设置lwwreg寄存器值的语法是什么?CRDT Map我尝试了如下似乎无效的代码:

%% Obj is a map object to which we want to add/set a register "uname" with value
%% "ahmed"
riak_kv_crdt:update(Obj,<<"testing">>,{crdt_op,riak_dt_map,
{update,[{assign,<<"uname">>,<<"ahmed">>}]},undefined})

我收到有关操作无效的错误 - 我查看了源代码riak_dt_map.erl但仍然无法找出正确的语法:

> riak_kv_crdt:update(Obj,<<"testing">>,{crdt_op,riak_dt_map,{update,
  [{assign,<<"uname">>,<<"ahmed">>}]},undefined}).

** exception error: no function clause matching 
                    riak_dt_map:apply_ops([{assign,<<"uname">>,<<"ahmed">>}],
                                          {<<"testing">>,1},
                                          {[{<<"testing">>,1}],
                    .....

将欣赏有关正确语法的指针。

4

1 回答 1

1

弄清楚了。riak_dt_lwwreg正确的语法如下 -在这种情况下,键必须伴随着字段的类型,并且assign必须为寄存器值指定操作 - 因此,语法变为:

riak_kv_crdt:update(Obj,<<"testing">>,{crdt_op,riak_dt_map,{update,
[{update,{<<"uname">>,riak_dt_lwwreg},{assign,<<"ahmed">>}}]},undefined})
于 2016-05-08T17:44:11.967 回答