Memory Cache in .NET
Wahid Abduhakimov
Posted on November 25, 2022
Cache nima?
Dastur ma'lumotni bir necha usulda saqlaydi. Hajmi katta va kamdan-kam chaqiriladigan ma'lumotlar fizik diskda fayl sifatida saqlanadi.
Tez o'zgaruvchan, uzoq vaqt saqlanadigan va ko'p murojat qilinadigan ma'lumotlar databazalarda saqlanadi. Ma'lumotni turi va chaqirilish shakliga qarab turli databaza dizaynlari mavjud. Bir-biriga chuqur bog'liqligi ko'p bo'lgan ma'lumotlar SQL databazalarda, dokument ko'rinishida bo'lgan va boshqa ma'lumotlarga ko'p bog'lanmaganlari esa dokument databazalar (Mongo, Cosmos)larda saqlanadi.
Bundan tashqari 3-xil ma'lumotni saqlash usuli ham bor. Ma'lumot hajmi juda kichik, saqlash muddati o'zgaruvchan (odatda juda qisqa) va ma'lumotga murojat juda ko'p bo'lsa, dastur tezligini oshirish maqsadida bunday ma'lumotlar vaqtinchalik "omborlar"da ya'ni cache'larda saqlanadi.
.NET dasturchilar uchun ma'lumotni cache'da saqlash uchun juda qulay API IMemoryCache
interfeysi mavjud.
MemoryCache
ma'lumotni vaqtincha key/value
juftlik sifatida RAMda (tezkor xotirada) saqlaydi. Bu xotiraga expiration time
ya'ni o'chib ketish vaqtini belgilasa bo'ladi. Masalan, 10 sekundda o'chib ketishini yoki aniq bir vaqtda o'chib ketishini yoki 10 sekund ishlatilmasa o'chib ketishini belgilab qo'ysa bo'ladi.
MemoryCache juda ham qulay va easy-to-use yechim. Lekin u RAMda saqlangani bois, dastur o'chib yonsa vaqtincha saqlanga ma'lumotlar ham o'chib ketadi. Masalan, siz foydalanuvchilarni sessionlarini MemoryCacheda saqlayotgan bo'lsangiz dastur nimadir sababga ko'ra o'chib yonsa, foydalanuvchilar sessionlarini yo'qotishadi.
MemoryCache bilan yana bir muammo bor. Agar dastur microservice arxitektura bilan qurilgan bo'lsa va bir vaqtda dasturni bir necha nusxasi ishlab tursa bitta nusxaning RAM xotirasida saqlanayotga Cache boshqa bir nusxada mavjud bo'lmaydi.
Ya'ni MemoryCache Distributed sistemalarda ishlamaydi.
Bunga yechim Distributed Caching
sistema ya'ni Redis. Redisning ishlash prinsipi MemoryCache bilan deyarli bir xil. Lekin uning afzalligi Redisda saqlangan Cache ishlab turgan dasturning holatiga (o'chib/yonishiga) bog'liq emas. Bundan tashqari dasturning bir nechta nusxasi bir vaqtda bitta Redis markaziy Cache'ga ulanadi va hammasi bir xil ma'lumot saqlaydi va o'qiydi.
Keyingi postda video darslik sifatida MemoryCache va Redisdan qanday foydalanish haqida gaplashamiz.
Posted on November 25, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.