Siehe, meinen einfachen Python Memcached Code unten:Wie atomar ein Element zu einer Memcached Liste hinzuzufügen (in Python)
import memcache
memcache_client = memcache.Client(['127.0.0.1:11211'], debug=True)
key = "myList"
obj = ["A", "B", "C"]
memcache_client.set(key, obj)
Nun, ich nehmen an, ein Element "D" auf die Liste als myList
zwischengespeichert angehängt werden soll Wie kann ich das atomar machen?
Ich weiß, das ist falsch, weil es nicht atomar ist:
memcache_client.set(key, memcache_client.get(key) + ["D"])
Die obige Aussage enthält eine Race-Bedingung. Wenn ein anderer Thread dieselbe Anweisung zum genau richtigen Zeitpunkt ausführt, wird eines der Updates durcheinander gebracht.
Wie kann ich diese Race Condition lösen? Wie kann ich eine Liste oder ein Wörterbuch, die in memcached gespeichert sind, automatisch aktualisieren?
https://code.google.com/p/memcached/wiki/NewCommands – user3159253
Wahrscheinlich ist dies die Antwort, sollten Sie 'cas verwenden()' (Check-and-set) statt einfacher 'set()' – user3159253
welche python memcache lib verwenden Sie? – Anentropic