我正在使用Aerospike的持久存储。下面是相同的配置。当我使用:
删除密钥时,我正在使用python客户端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
}
}
是否有解决办法?
答案 0 :(得分:4)
我在Aerospike工作,并且在路线图上解决了这种问题。
这是预期的。当发生删除时,将从索引中删除对记录的引用,但记录本身仍保留在写入块中,直到该写入块被新数据重写为止。当发生冷启动并从磁盘读取数据时,尚未重写的块可能已删除已读取的记录,并且系统无法知道这些记录是否已删除。所以删除的数据可以回来。
这将在此详细讨论:
https://discuss.aerospike.com/t/expired-deleted-data-reappears-after-server-is-restarted/470
请注意,这只是在Aerospike冷启动时,在某些情况下可以进行暖启动,删除的数据不会重新出现。