【发布时间】:2018-11-07 06:25:12
【问题描述】:
我需要 Aerospike 的原子“设置最小值”操作,其中我给出一个 bin 名称和一个数字参数,并设置并返回 bin 的当前值或参数中的较低值。
以下 Lua UDF 应该可以工作
test.lua
function set_min(rec, bin_name, value)
if aerospike:exists(rec) then
local min = rec[bin_name]
if min > value then
rec[bin_name] = value
aerospike:update(rec)
end
else
rec[bin_name] = value
aerospike:create(rec)
end
return rec[bin_name]
end
使用参数 11、9、5、7 运行:
aql> execute test.set_min('minval', 11) on test.set-min where PK=2
+---------+
| set_min |
+---------+
| 11 |
+---------+
1 row in set (0.001 secs)
OK
aql> execute test.set_min('minval', 9) on test.set-min where PK=2
+---------+
| set_min |
+---------+
| 9 |
+---------+
1 row in set (0.001 secs)
OK
aql> execute test.set_min('minval', 5) on test.set-min where PK=2
+---------+
| set_min |
+---------+
| 5 |
+---------+
1 row in set (0.001 secs)
OK
aql> execute test.set_min('minval', 7) on test.set-min where PK=2
+---------+
| set_min |
+---------+
| 5 |
+---------+
1 row in set (0.000 secs)
还有其他方法吗?
【问题讨论】:
标签: types lua user-defined-functions aerospike