我有一个Aerospike缓存由一系列的数据与json值一样的结构。示例值:{"name": "John", "count": 10}我想扫描所有记录并将计数重置为零。处理此问题的好方法是什么?
{"name": "John", "count": 10}
wtzytmuj1#
我认为最好的方法是利用后台操作...我刚刚在Aerospike sandbox上尝试了以下代码,它确实将“report”Map中的所有“shape”条目更新为updated shape。(免责声明:我不是一个开发人员,所以一般来说,在Java中可能会有一些非常糟糕的方法,但这希望展示如何在Aerospike中进行后台操作扫描)运行"设置“选项卡,然后将其复制粘贴到”创建“选项卡(或空白选项卡)中并运行:
updated shape
import com.aerospike.client.task.ExecuteTask; import com.aerospike.client.task.Task; import com.aerospike.client.query.Statement; import com.aerospike.client.query.Filter; import com.aerospike.client.Operation; import com.aerospike.client.exp.Exp; AerospikeClient client = new AerospikeClient("127.0.0.1", 3000); try { WritePolicy writePolicy = new WritePolicy(); MapPolicy mapPolicy = new MapPolicy(); String mapBinName = "report"; String mapKeyName = "shape"; Statement stmt = new Statement(); stmt.setNamespace("sandbox"); stmt.setSetName("ufodata"); ExecuteTask task = client.execute( writePolicy, stmt, MapOperation.put(mapPolicy, mapBinName, Value.get(mapKeyName), Value.get("updated shape"))); if(task != null) { System.out.format("Task ID: %s\nTask Status: %s", task.getTaskId(), task.queryStatus()); } else { System.out.format("Task seems null!"); } } catch (AerospikeException ae) { System.out.format("Error: %s", ae.getMessage()); }
您可以将其更改为二级索引查询(如果已定义),或在Map框本身上添加更多过滤器...以下几个教程可能会有所帮助:
1条答案
按热度按时间wtzytmuj1#
我认为最好的方法是利用后台操作...我刚刚在Aerospike sandbox上尝试了以下代码,它确实将“report”Map中的所有“shape”条目更新为
updated shape
。(免责声明:我不是一个开发人员,所以一般来说,在Java中可能会有一些非常糟糕的方法,但这希望展示如何在Aerospike中进行后台操作扫描)运行"设置“选项卡,然后将其复制粘贴到”创建“选项卡(或空白选项卡)中并运行:
您可以将其更改为二级索引查询(如果已定义),或在Map框本身上添加更多过滤器...
以下几个教程可能会有所帮助: