Ecco il mio semplice codice Python memcached di seguito:Come aggiungere un elemento a un elenco memcached atomicamente (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)
Ora, supponiamo che io voglio per aggiungere un elemento "D" alla lista memorizzato nella cache come myList
come posso farlo atomicamente?
So che questo è sbagliato, perché non è atomica:
memcache_client.set(key, memcache_client.get(key) + ["D"])
La dichiarazione di cui sopra contiene una condizione di competizione. Se un altro thread esegue questa stessa istruzione nel momento esatto in cui uno degli aggiornamenti si bloccherà.
Come posso risolvere questa condizione di gara? Come posso aggiornare un elenco o un dizionario memorizzato in memcached atomicamente?
https://code.google.com/p/memcached/wiki/NewCommands – user3159253
Probabilmente questa è la risposta, si dovrebbe usare 'cas()' (check-and-set) al posto del semplice 'set()' – user3159253
quale lib di memcache python stai usando? – Anentropic