删除不适用于 aerospike 持久存储的记录

Delete record not working for aerospike persistent storage

我正在为 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
    }

}

是否有相同的解决方法?

我在 Aerospike 工作,它在解决这种行为的路线图上。

这是意料之中的。当删除发生时,对记录的引用从索引中删除,但记录本身保留在写块内,直到用新数据重写该写块。当发生冷启动时,从磁盘读取数据时,未被重写的块可能已经删除了读取的记录,系统无法知道这些记录已被删除。所以删除的数据可以恢复。

此处详细讨论:

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

请注意,这仅适用于 Aerospike 冷启动时,在某些情况下可以进行热重启并且删除的数据不会重新出现。