我将一些计数器存储在 aerospike-say 计数器a中,b并c连同一个 parent_id 说pid,显然还有一个 pk 说pk。我需要从我的服务中增加计数器,所以我写了三个函数incrementA,incrementB和incrementC。
现在假设,我必须从服务中调用函数incrementA。计数器a递增,但其他计数器均未初始化为0. 现在,我知道当我调用incrementB或incrementC相应的计数器会增加时,但我找不到初始化pid.
我可以想到以下方法来解决上述问题:
- 在我的服务中编写初始化逻辑。所以,在 aerospike 我有类似的东西
{'pk':'pk1', 'a':0,'b':0,'c':0,'pid':'pid1'}。 - 每当我对任何计数器进行增量时,我也会对其他计数器进行初始化,或者
pid如果尚未完成。
上述方式的问题是:
- 要从服务初始化,我必须检查初始化是否已经完成(否则我将重置我的计数器)。这基本上会使 aerospike 呼叫的数量增加一倍。(批处理调用在这里有帮助吗?)
- 如果在增加特定计数器的同时为其他人初始化,我将
pid使用相同的值一次又一次地更新。
如果有人能提出更好的方法,我将不胜感激!
PS:我需要pid在数据库中为每个pk,因为我需要查询所有pk具有相同pid.