Aggiungi vs impostato in Memcached

Non capisco la differenza tra ADD e SET Qualsiasi indizio? Sembra che ADD include SET o che restituisce restituito false se c'è qualcosa e SET sovrascrive. Grazie!

EDIT: La mia domanda specifica è: "Quando utilizzi l'aggiunta anziché l'impostazione o l'impostazione anziché l'aggiunta?"

  • Quanto funzionano insieme nginx e memcached?
  • Memcached - un grande server rispetto a più piccoli
  • Memcached Lagging
  • Lancio memcached sul caricamento del server?
  • Multiple AWS EC2 in esecuzione Scaling automatico e Memcache distribuito
  • Se faccio una richiesta all'indirizzo IP del mio server, sarà uguale a utilizzare 127.0.0.1 o più lento?
  • 2 Solutions collect form web for “Aggiungi vs impostato in Memcached”

    Hai già ottenuto la risposta alla tua prima domanda: l'intenzione di ADD è solo quando una chiave non esiste già, mentre SET è lì per aggiornare il valore, indipendentemente dal fatto che esista già. Se hai familiarità con SQL, è (approssimativamente) come la differenza tra le query INSERT ( ADD ) e UPDATE ( SET ).

    Per quanto riguarda la tua domanda di addendum, utilizzerai qualunque sia il tuo scopo. Vorrei dire che SET sarebbe l'operazione più comune, perché è più comune che tu voglia solo dire "voglio che il tasto abbia il bar valore e non mi preoccupo se è già esistito". Tuttavia, ci sarebbero (less frequenti) occasioni quando sarebbe necessario sapere che una chiave non è già nella cache.

    Un esempio che mi viene in mente quando l' ADD è appropriato è la memorizzazione di sessioni in memcache (che, a proposito, non lo consiglio). Se stai generando casualmente i tuoi ID di session (o tramite hashing), non vuoi creare una nuova session con la stessa chiave di quella esistente, in quanto ciò consentirebbe ad un utente di accedere ai dati di un altro utente. In questo caso, quando hai creato la session utilizzare ADD , e se ha restituito uno stato di errore, dovresti generare un nuovo ID di session e riprovare. L'aggiornamento della session, ovviamente, utilizza SET quanto l'utente ha lavorato per la propria applicazione.

    Oltre alla risposta sopra indicata da user-id 'womble', si prega di considerare anche i seguenti punti:

    1. Possibilità di una condizione di gara con 'set' in contrasto con 'add'. Vedi link sotto a una risposta di Nick Johnson: https://stackoverflow.com/questions/13234556/using-memcache-add-instead-of-set

    2. Se sai che 'aggiungi' farà, allora non utilizzare 'set'. Ciò significa evitare l'invio di dati sulla networking in quanto sono chiamate RPC . E praticamente quasi tutto il tempo viene consumato dal traffico di networking, invece di cercare la coppia di valori-chiave in memcache. Quindi, se si può evitare il traffico di networking che è meglio come in quel caso il tempo di risposta sarà più veloce.


    Vedi Appstats ( https://developers.google.com/appengine/docs/python/tools/appstats (da Google)) e per capire meglio il punto 2 di seguito, guarda http://www.youtube.com/watch ? v = bvp7CuBWVgA di Guido Van Rossum (@Google)

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.