Wie redis, wie lösche ich einen Schlüssel und erhalten Sie seinen Wert zur gleichen Zeit, und am wichtigsten, wird es in einem Befehl ausgeführt so ist es threadsicher. In redis, wie lösche ich einen Schlüssel und bekomme seinen Wert zur gleichen Zeit
Antwort
Es gibt keinen einzigen Befehl. Sie können entweder ein Lua-Skript schreiben oder eine Transaktion ausführen. Eine Transaktion würde sich einfach wie:
127.0.0.1:6379> SET foo bar
OK
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379> GET foo
QUEUED
127.0.0.1:6379> DEL foo
QUEUED
127.0.0.1:6379> EXEC
1) "bar"
2) (integer) 1
ein Lua-Script verwendet
127.0.0.1:6379> SET foo bar
OK
127.0.0.1:6379> EVAL "local x = redis.call('GET', KEYS[1]); redis.call('DEL', KEYS[1]); return x" 1 foo
"bar"
127.0.0.1:6379> GET foo
(nil)
beide gleich funktionieren, aber mit Lua-Script, kann das Skript im Cache gespeichert werden und es gibt keine Notwendigkeit, den gesamten Code zu wiederholen Das nächste Mal möchten Sie es anrufen. Wir können SCRIPT LOAD verwenden, das die Skripte zwischenspeichert und eine eindeutige ID zurückgibt, die als Funktionsname für nachfolgende Aufrufe verwendet wird (die meisten Clients abstrahieren dies transparent), z.
127.0.0.1:6379> SCRIPT LOAD "local x = redis.call('GET', KEYS[1]); redis.call('DEL', KEYS[1]); return x"
"89d675c84cf3bd6b3b38ab96fec7c7fb2386e4b7"
127.0.0.1:6379> SET foo bar
OK
# Now we use the returned SHA of the script to call it without parsing it again:
127.0.0.1:6379> EVALSHA 89d675c84cf3bd6b3b38ab96fec7c7fb2386e4b7 1 foo
"bar"
Alternativ könnte man ein Modul dafür entwickeln;) (upvoted oc). –
Wird in der Transaktion ein weiterer Befehl wie decr zwischen GET und DEL Befehl ausgeführt? – FridayLi
@FridayLi kann nicht während der Ausführung der Transaktion passieren, nur während Sie die Transaktion puffern. –
- 1. Wie man einen Hash in redis durch seinen Wert sortiert
- 2. Wie bekomme ich Schlüssel aus dem Wert in Redis
- 3. Platzhalter und Wert zur gleichen Zeit
- 4. Wie bekomme ich alle Schlüssel von Redis mit redis Vorlage
- 5. Bind viele Schlüssel zur gleichen Zeit
- 6. Echo zwei Schlüssel zur gleichen Zeit
- 7. HashMap und LinkedHashMap zur gleichen Zeit erweitern?
- 8. Redis speichern Schlüssel ohne Wert
- 9. Abfrage Timestamp und Wert zur gleichen Zeit in Firebase
- 10. Wie bekomme ich Schlüssel und Schlüssel Kinder Wert mit JSON.net
- 11. Wie UPDATE und SELECT zur gleichen Zeit
- 12. Lösche Schlüssel vom Redis-Server mit redis-cli
- 13. Verwaiste Schlüssel in Redis
- 14. Split ein Single-Pair-Hash in seinen Schlüssel und Wert?
- 15. Die Beziehung mit redis Schlüssel redisObject und redis Wert redisObject
- 16. autoClick zur gleichen Zeit Fehler
- 17. primefaces: Action und Umleitung zur gleichen Zeit
- 18. Wie bekomme ich den ersten Schlüssel mit besonderem Wert in redis?
- 19. Update zwei Wert zur gleichen Zeit in clojure
- 20. versuchen und fangen zur gleichen Zeit ausgeführt
- 21. Wie bekomme ich einen Wert, nicht Schlüssel aus dropDownList Yii2
- 22. Schlüssel und Feld in redis?
- 23. Hover Div und Tabellenzeilen zur gleichen Zeit
- 24. Wie lösche ich Daten von Redis nach 48 Stunden?
- 25. Pfad und FormData-Parameter zur gleichen Zeit
- 26. Holen Sie zwei Schlüssel zur gleichen Zeit - Assembly 8086
- 27. PHP - Get maximale Schlüssel und seinen Wert in Array
- 28. NLog - Exception und Protokollmeldung zur gleichen Zeit
- 29. Rescaling und einen Film zur gleichen Zeit mit ffmpeg
- 30. jQuery wähle 'this' und einen anderen Selektor zur gleichen Zeit
Ich denke, Sie müssen etwas Eigenes implementieren. http://www.rediscookbook.org/get_and_delete.html –