Bu mevcut veritabanı sorgularını etrafında isteğe bağlı memcached önbelleğe sarmak kolay. Örneğin:
Eski (DB-only):
function getX
x = get from db
return x
end
Yeni (memcache ile DB):
function getX
x = get from memcache
if found
return x
endif
x = get from db
set x in memcache
return x
end
Şey size önbelleğe istiyorum nasıl her zaman değil, olsa. Örneğin aşağıdaki iki sorgu alır:
-- get all items (recordset)
SELECT * FROM items;
-- get one item (record)
SELECT * FROM items WHERE pkid = 42;
Ben önbelleğe alma işlemek için yukarıdaki sözde kod kullanmak için olsaydı, ben iki öğenin 42 tüm alanları saklamak olacaktır. Bir kere büyük plak seti ve bir kez kendi kendine. Doğrusu böyle bir şey yapmak istiyorum oysa:
SELECT pkid FROM items;
ve PK adlı bu endeksi önbelleğe. Sonra da tek tek her kayıt önbelleğe.
Yani özet olarak, DB için en iyi çalışacak veri erişim stratejisi düzgünce memcache stratejisini uymuyor. Ben memcache katman ben tür iki dünyanın en iyi olmasını istiyorum (memcache aşağı ise yani, site hala çalışır) isteğe bağlı, ama bunu yapmak istiyorum çünkü, ben korumak gerekir eminim bir 2 farklı formlarda (.. ve 2 tek sorguda kayıt getirilemedi 1 kayıtları daha sonra, endeksi getirme) de sorguları çok. Bu pagination ile daha karmaşık alır. DB ile LİMİT / OFFSET SQL sorguları yapardım, ama memcache ile sadece PK adlı dizin getirme ve daha sonra dizinin ilgili dilim toplu olsun istiyorum.
Ben düzgünce bu tasarımı nasıl emin değilim, kimse herhangi bir öneriniz var mı?
Daha da iyisi, bu karşı kendinizi geldim eğer. Bunu nasıl ele?