删除不适用于 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 冷启动时,在某些情况下可以进行热重启并且删除的数据不会重新出现。
我正在为 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 冷启动时,在某些情况下可以进行热重启并且删除的数据不会重新出现。