1
我決定嘗試aerospike,但是我遇到了一些問題。 我使用的碼頭工人,塞:無法從aerospike中刪除記錄
companies-data:
image: 'aerospike/aerospike-server:3.10.0-1'
ports:
- '5310:3000'
- '5311:3001'
- '5312:3002'
- '5313:3003'
volumes:
- './companies-data/data:/opt/aerospike/data'
- './companies-data/config:/opt/aerospike/etc'
command: '/usr/bin/asd --foreground --config-file /opt/aerospike/etc/aerospike.conf'
當我創建了一個記錄,然後重新啓動泊塢窗容器中的數據仍然存在,所以卷的設置是否正確。但是,當我刪除記錄並重新啓動泊塢窗容器時,記錄仍然存在,它不會被刪除。在重新啓動之前它工作正常:記錄被刪除,但是在docker-container重新啓動後,它再次出現。
我正在使用nodejs aerospike客戶端。
let key = new Key(this.ns, this.set, id);
client.remove(key, function (err, key) {
if (err) {
return reject(err);
}
resolve(key);
});
這裏是我的conf:
service {
user root
group root
paxos-single-replica-limit 1 # Number of nodes where the replica count is automatically reduced to 1.
pidfile /var/run/aerospike/asd.pid
service-threads 4
transaction-queues 4
transaction-threads-per-queue 4
proto-fd-max 15000
}
logging {
# Log file must be an absolute path.
file /var/log/aerospike/aerospike.log {
context any info
}
# Send log messages to stdout
console {
context any info
}
}
network {
service {
address any
port 3000
# Uncomment the following to set the `access-address` parameter to the
# IP address of the Docker host. This will the allow the server to correctly
# publish the address which applications and other nodes in the cluster to
# use when addressing this node.
# access-address <IPADDR>
}
heartbeat {
# mesh is used for environments that do not support multicast
mode mesh
port 3002
# use asinfo -v 'tip:host=<ADDR>;port=3002' to inform cluster of
# other mesh nodes
interval 150
timeout 10
}
fabric {
port 3001
}
info {
port 3003
}
}
namespace mtm {
replication-factor 2
memory-size 1G
default-ttl 5d # 5 days, use 0 to never expire/evict.
# storage-engine memory
# To use file storage backing, comment out the line above and use the
# following lines instead.
storage-engine device {
file /opt/aerospike/data/mtm.dat
filesize 4G
data-in-memory true # Store data in memory in addition to file.
}
}
如何完全刪除記錄?
顯然,除非您爲企業版支付費用,否則您無法執行此基本操作。 –
您可以使用ttl來管理記錄的生命週期(因爲過期的記錄不會在冷啓動時加載 - 但是您必須不縮短記錄的壽命,否則會遇到同樣的問題)。解決這個問題的另一種方法是在將數據添加回羣集之前清理其數據的節點(如果執行了大量刪除操作)。即使在企業版中,冷啓動也會帶回已刪除的記錄,除非它們已被持久刪除(在使用之前它有自己的一套事情要考慮......) – Meher