anchovycation / metronom

Easy to use Redis ORM based on node-redis with TypeScript support
https://anchovycation.github.io/metronom/
GNU General Public License v3.0
7 stars 3 forks source link

`ModelInstance` içindeki bir alanda değişiklik yapıldığında tüm alanlar tekrardan kaydediliyor #31

Open saracalihan opened 2 years ago

saracalihan commented 2 years ago

ModelInstance objesi içindeki her key Redis üzerinde bir hash içinde key olarak tutuluyor.

Şu anki sisteme göre ModelInstance üzerindeki tek bir key değiştirilip ModelInstance.save() fonksiyonu çalıştırıldığında tüm keyler tek tek kaydediliyor ve bu yüzden sistemde yavaşlık olunuyor bunun yerine ModelInstance bir proxy ile takip edilerek ModelInstance içine _changedValues adında bir obje yerleştirilebilir ve bu objenin içine değişen keyler yazılırsa sadece o keyler Rediste güncellenebilir. Bu sayede toplamda n tane key'i olan bir nesnede m tane key değiştirildiğinde n-m kere gereksiz yazılma işlemi yapılmayacak.

saracalihan commented 2 years ago

@beyzaerkan ModelInstance'ı proxy haline getirerek bu özelliği ekleyebilir ModelInstance içine _changedValues key'ini ekleyip save fonksiyonunda da sadece o alanları kaydetme işini yapabilir misin?

saracalihan commented 2 years ago

İç içe objelerde alt seviyeden bir key değiştiğinde proxy tetiklenmediği için o ana key kaydedilmiyor. Alttaki alanlar da takip edilmeli.