我很难找到关于 aerospike 的有限文档。使用带或不带 lua 的 aerospike 过滤器,我是否可以:
- 订购我的结果服务器端
- 使用过滤器进行大于/小于查询
本质上,我想编码一个值(客户端)并从 aerospike 中检索第一行,其值大于编码的值。
另一种说法,与价格相反是对的……我能在 aerospike 中找到的最低价值是多少,谁的价值不低于我给出的价值。
我喜欢一种简单的方法,但我也愿意解决问题(或者如果它不合理/不实用,则完全拒绝)
大型列表 (LDT) 原生支持基本排序。
在大列表中,您的键(索引)始终默认以词法方式排序。
请注意,ldt-enabled true
指令必须出现在命名空间的配置区域中aerospike.conf
javascript 客户端的示例
var key = {ns: 'test', set: 'mySet', key: 'myKey'};
var callback = function (status, result) {console.log(status, result)}
var list = client.LargeList(key, 'targetBinName', null, callback));
// add first item (also determinate the list values type)
list.add(1, callback);
// add multiple items
list.add([0, 2, 4, 5], callback);
list.add(3, callback);
// get all items
list.scan(function (status, list) {
// list = [0, 1, 2, 3, 4, 5]
})
// select by values range
list.findRange(0, 3, callback)
// filter using udf to do custom gt/lt filtering
list.filter('udfName', callback)
如果您需要存储对象,那么您必须添加一个key
属性,该属性将作为排序、范围、重复等的索引(默认情况下不允许重复)
list.add({key: 1})
list.add([{key: 0},{key: 2}])
我确信其他语言驱动程序或多或少都有相同的方法。
Github上 NodeJS 客户端中的大型列表文档部分