我正在使用具有存储机制SSD的aerospike集群。我已经更新了一些密钥,但是当我重新启动aerospike集群时,它会恢复以前的值来代替新值。
WritePolicy writePolicy = new WritePolicy();
writePolicy.recordExistsAction = RecordExistsAction.UPDATE;
writePolicy.generationPolicy = GenerationPolicy.NONE;
Bin whiteList = Bin.asNull("bin1");
Bin blackList = Bin.asNull("bin2");
client.put(writePolicy, key, whiteList, blackList);
我只想在服务器重启后取代旧值的最后更新值。
我该如何处理此案?
答案 0 :(得分:1)
我怀疑你在冷启动时遇到记录良好的行为,如下所述:
https://discuss.aerospike.com/t/expired-deleted-data-reappears-after-server-is-restarted/470/2
当Aerospike冷启动时,它会从磁盘读取数据。删除记录时,将从索引中删除对该记录的引用。当孤立地查看磁盘时,数据库无法知道它从磁盘读取的记录是否被删除(因为索引在内存中并且根据定义不可用)
因此,'ghost'记录似乎在冷启动时重新出现。这将通过“持久”删除很快得到解决。
答案 1 :(得分:0)
一个可能的答案可能是群集中的节点不同步并且从未更新的节点获取值。因此,在执行查询之前,请确保已同步集群中的所有节点。