DEV Community

Cover image for Memory Cache in .NET
Wahid Abduhakimov
Wahid Abduhakimov

Posted on • Edited on

Memory Cache in .NET

Image description

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.

Top comments (1)

Collapse
 
muhammadabdulloh profile image
Muhammad Abdulloh

Rahmat aka juda foydali post bo'libdi, Bardavom bo'ling!