ADD ve SET arasındaki farkları anlamıyorum Herhangi bir ipucu? ADD'nin SET içermesi ya da bir şey varsa ve SET'in üzerine yazması durumunda ADD'nin false döndürdüğü görülüyor. Teşekkürler!
DÜZENLEME: Benim özel sorum: "Ne eklemek yerine eklemek veya eklemek yerine eklemek?"
Şimdiden ilk sorunun cevabını aldınız:
ADD sadece bir anahtar mevcut değilken çalışmak için
SET zaten var olup olmadığına bakılmaksızın değeri güncellemek için var. SQL ile aşina iseniz, (kabaca) arasındaki fark gibi
INSERT sorguları (
ADD) ve
UPDATE (
SET).
Ek soruyla ilgili olarak, hangisi sizin amacınıza uygunsa onu kullanırsınız. şunu söylemek isterim
SET daha yaygın işlem olurdu, çünkü sadece "Ben anahtarı istiyorum
foo değere sahip olmak
barve zaten orada olup olmadığına aldırmam. "Ancak, anahtarın önbellekte bulunmadığını bilmek gerekli olduğunda (daha az sıklıkta) durumlar olacaktır.
Ne zaman akla gelen bir örnek
ADD uygun olurdu memcache oturumları saklamak (ki, bu arada, ben tavsiye etmem) - Eğer oturum kimliklerini rastgele (veya karma yoluyla) oluşturuyorsanız, yeni bir oturum oluşturmak istemezsiniz. Bir kullanıcının başka bir kullanıcının verilerine erişmesini sağlayacağından, mevcut olanla aynı anahtar. Bu durumda, oturumu oluşturduğunuzda
ADDve bir hata durumu döndürdüyse, yeni bir oturum kimliği oluşturmanız ve tekrar denemeniz gerekir. Seansın güncellenmesi, elbette,
SET kullanıcı uygulamanızın içinden geçerken.
Yukarıdaki kullanıcı adı 'womble' ile ek olarak, lütfen aşağıdaki noktaları da göz önünde bulundurun:
-
Bir olasılık yarış kondisyonu 'add' ile tersine 'set' ile. Nick Johnson'un bir cevabına aşağıdaki bağlantıya bakın: https://stackoverflow.com/questions/13234556/using-memcache-add-instead-of-set
-
Eğer 'add' komutunu biliyorsanız, 'set' kullanmayın. Bu RPC çağrıları olduğu için ağ üzerinden veri göndermekten kaçının. Ve neredeyse tüm zamanlar, memcache'de anahtar-değer çifti aramanın tersine, ağ trafiği tarafından tüketilir. Bu nedenle, en iyi olduğu gibi ağ trafiğinden kaçınmanız durumunda yanıt süreniz daha hızlı olacaktır.
Appstats'a bakın (https://developers.google.com/appengine/docs/python/tools/appstats (Google’a göre)) ve yukarıdaki 2. numaralı noktayı daha fazla anlamak için lütfen izleyin http://www.youtube.com/watch?v=bvp7CuBWVgA Guido Van Rossum (@Google) tarafından