Thường thì tôi làm:Sử dụng memcache.add() thay vì set()
if not memcache.get('mykey'):
memcache.set('mykey', item)
Tuy nhiên, hôm nay tôi thấy memcache.add()
, sẽ xuất hiện thêm một mục duy nhất nếu nó không tồn tại. Vì vậy, điều này tương đương với mã tôi có ở trên? Tôi có thể thay thế mã ở trên bằng memcache.add()
không?
Ngoài ra, và quan trọng hơn, tôi đang sử dụng AppStats, và dưới RPC Dấu vết cuộc gọi, tôi có thể nhìn thấy nếu yêu cầu tôi gọi memcache.set()
hoặc get()
hoặc datastore.put()
hoặc get()
. Khi sử dụng 2 dòng mã ở trên, tôi không thấy bất kỳ điều gì cho memcache.set()
, được mong đợi. Tuy nhiên, chỉ sử dụng memcache.add()
(mà không kiểm tra xem mục đó đã tồn tại hay chưa) luôn gọi memcache.set()
, mặc dù memcache.add()
trả về false (nghĩa là một mục mới chưa được chèn). Tại sao điều này là trường hợp?
Bạn nên xem [mã nguồn] (http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/memcache/__init__.py#761) :) –
@PaoloMoretti cảm ơn vì liên kết .. chính xác thì tôi đang tìm kiếm gì .. – Snowman
Câu hỏi này (hoặc một câu hỏi tương tự) đã được yêu cầu trên stackoverflow trước đây, tôi cũng muốn hướng dẫn bạn - http: // stackoverflow. com/questions/2678339/memcached-đó-là-nhanh-làm-một-thêm-và-kiểm tra-kết quả-hoặc-làm-a-get - http://serverfault.com/questions/291681/add-vs- thiết lập trong memcached –