2016-03-03 90 views
3

我正在使用针对Aerospike的永久存储器。下面是相同的配置。我使用python客户端时,我删除使用的密钥:删除记录不适用于Aerospike永久存储器

client.remove(key) 

数据被删除。现在,当我重新启动服务器时,数据又回来了。这是它应该如何工作,或者我做错了什么?

配置文件:

namespace xxx { 
    replication-factor 2 
    memory-size 2G 
    default-ttl 60d # 5 days, use 0 to never expire/evict. 


    # To use file storage backing, comment out the line above and use the 
    # following lines instead. 
    storage-engine device { 
      file /opt/aerospike/data/xxx.dat 
      filesize 4G 
      data-in-memory true # Store data in memory in addition to file. 
      write-block-size 128K 
    } 

} 

有一个变通的一样吗?

回答

4

我在Aerospike工作,它在解决此问题的路线图上。

这是预期的。发生删除时,对索引的引用将从索引中删除,但记录本身保留在写入块中,直到该写入块被新数据重写为止。当发生冷启动并且从磁盘读取数据时,未被重写的块可能已经删除了被读取的记录,并且系统无法知道这些记录被删除。所以删除的数据可以回来。

这将在这里详细讨论:

https://discuss.aerospike.com/t/expired-deleted-data-reappears-after-server-is-restarted/470

请注意,这只是塞式时,冷启动,在某些情况下,热启动是可能的,删除的数据不会再出现。