Ich möchte die TTL aller Datensätze ändern, die versehentlich mit einer TTL "Nie ablaufen" (-1 im Client) festgelegt wurden. Wie würde ich das tun?Wie ändere ich die TTL aller Datensätze, die mit einem TTL von -1 in Aerospike gesetzt wurden?
Antwort
Nur um zu klären, eine TTL of -1 in der Client-Einstellung bedeutet, nie (entspricht einem default-ttl
von 0 in der aerospike.conf-Datei des Servers), ablaufen, während ein TTL von 0 in der Client-Einstellung bedeutet für die default-ttl erben Dieser Namespace.
Mit Prädikat Filter:
Wenn Sie den Java verwenden, C, C# und Go Kunden die einfachste Möglichkeit, die Datensätze mit einem void time von 0 zu identifizieren wären ein predicate filter zu verwenden. Sie würden eine einfache Datensatz-UDF auf alle Datensätze anwenden, die vom Prädikatfilter abgeglichen wurden.
ttl.lua
function set_ttl(rec, to_ttl)
record.set_ttl(rec, to_ttl)
-- for the TTL update to happen a bin must be 'dirty'
-- set the first bin back with the value of the first bin
-- no changes will occur other than the TTL change, but the
-- aerospike:update(rec) will actually execute
local bin_names = record.bin_names(rec)
local do_nothing = rec[bin_names[1]]
rec[bin_names[1]] = do_nothing
aerospike:update(rec)
end
das Modul Lua Registrieren AQL mit:
$ aql
Aerospike Query Client
Version 3.12.0
C Client Version 4.1.4
Copyright 2012-2017 Aerospike. All rights reserved.
aql> register module './ttl.lua'
OK, 1 module added.
dann in der Java-App:
Statement stmt = new Statement();
stmt.setNamespace(params.namespace);
stmt.setSetName(params.set);
stmt.setPredExp(
PredExp.recVoidTime(),
PredExp.integerValue(0),
PredExp.integerEqual()
);
ExecuteTask task = client.execute(params.writePolicy, stmt, "ttl", "set_ttl", Value.IntegerValue(604800));
task.waitTillComplete();
Nur UDF mit:
Mit anderen Clients, die noch keine Prädikatfilterung (Python, PHP usw.) haben, würden Sie alles über eine Datensatz-UDF tun, die auf einen Scan angewendet wird. Die Filterlogik müsste innerhalb der UDF leben.
ttl.lua
function modify_zero_ttl(rec, to_ttl)
local rec_ttl = record.ttl(rec)
if rec_ttl == 0 then
record.set_ttl(rec, to_ttl)
-- for the TTL update to happen a bin must be 'dirty'
-- set the first bin back with the value of the first bin
-- no changes will occur other than the TTL change, but the
-- aerospike:update(rec) will actually execute
local bin_names = record.bin_names(rec)
local do_nothing = rec[bin_names[1]]
rec[bin_names[1]] = do_nothing
aerospike:update(rec)
end
end
In AQL:
$ aql
Aerospike Query Client
Version 3.12.0
C Client Version 4.1.4
Copyright 2012-2017 Aerospike. All rights reserved.
aql> register module './ttl.lua'
OK, 1 module added.
aql> execute ttl.modify_zero_ttl(604800) on test.foo
- 1. Aerospike TTL Hörer
- 2. Wie man Datensätze mit einem TTL von -1 in Aerospike abholen?
- 3. Aerospike: Löschen aller Datensätze in einem Satz
- 4. die TTL einzelner Einträge in EHCache 3
- 5. Mongodb TTL mit node.js
- 6. TTL für Couchbase Eimer
- 7. Spring Boot Cache TTL
- 8. Wo finde ich die ausgeführten TTL-Befehle in Mongo DB
- 9. Redis Multi-Set mit einem TTL
- 10. TTL für einen Satz Mitglied
- 11. Wird Minor-Komprimierungen in Cassandra entfernen verstrichene TTL-Datensätze
- 12. Cassandra TTL automatisch geändert
- 13. Sliding Window TTL in Cassandra
- 14. phpredis Funktion mSet mit ttl
- 15. Cassandra TTL funktioniert nicht
- 16. Redis Database TTL
- 17. Rdflib.js, wie die Daten in Turtle (.ttl) Format zu serialisieren?
- 18. entferne spezifizierten ttl in cassandra
- 19. Automatisches Löschen (TTL) in Cloudant
- 20. Mongo TTL-Bereinigung funktioniert nicht
- 21. Kann ich globale TTL in redis einstellen?
- 22. Holen Sie sich die TTL zur Laufzeit mit Infinispan
- 23. Lese FTDI TTL-232R USB
- 24. Hazelcast get ttl Schlüssel in Imap
- 25. Wie ändere ich die `Parameter`, die in der Steuerung in einer Aktion gesetzt wurden?
- 26. Azure Service Bus - TTL mit ScheduledEnqueueTimeUtc
- 27. So erhalten Sie die verbleibende TTL für Mongo Dokument
- 28. Mongo DB 3.2 ttl mit C# wrapper
- 29. Wie macht man elasticsearch document ttl arbeiten?
- 30. Pubnub Time to Live (TTL)
Diese https://stackoverflow.com/questions/45138351/how-to-fetch-records- in Frage zusammenhängt Ich habe geantwortet, dann hat der OP seine Frage geändert. Ich wollte die Information nicht verlieren, da ich die ursprüngliche Antwort jetzt erheblich bearbeiten muss. –