10-modul · 6-dars: Cache · Redis
Daraja: Ilg'or
Cache · Redis. Advanced backend bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Cache · Redis tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Cache qimmat hisoblash yoki o'qish natijasini keyingi foydalanish uchun saqlaydi. U tezlikni oshiradi, lekin eskirgan ma'lumot, invalidation va xotira xarajatini keltiradi. HTTP cache va server ichidagi method cache ikki xil qatlamdir. GET javoblari mos header bilan cachelanishi mumkin; shaxsiy response uchun public cache xavfli. Spring CacheManager cachelarni boshqaradi; @Cacheable mavjud natijani oladi yoki hisoblaydi, @CachePut natijani yozadi, @CacheEvict eski qiymatni olib tashlaydi. @EnableCaching va provider zarur. Proxy chegarasi, key tarkibi, TTL va maximumSize muhim. Faqat id yetarli bo'lmagan multi-tenant tizimda keyga tenant va kerakli authorization kontekstini qo'shing. Redis tarmoq orqali ishlaydigan in-memory data store bo'lib, cache va boshqa vazifalarda ishlatiladi. Redisning o'zi qo'shimcha dependency: outage va serialization siyosatini belgilang. Juda o'zgaruvchan yoki qat'iy yangi bo'lishi shart qiymatni cachelamang. Stampede, concurrent update va evictiondan keyingi noto'g'ri qayta yozilish holatlarini sinang; cache hech qachon ruxsat tekshiruvining o'rni emas.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/10-module%28Spring%20Boot%20Part%20%7C%7C%29.md) [Rasmiy qo‘llanma](https://docs.spring.io/spring-boot/reference/)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
@org.springframework.cache.annotation.Cacheable(cacheNames = "publicTopics", key = "#id")
public TopicDto publicTopic(long id) { return loadPublishedTopic(id); }
// Faqat public kontent; TTL va maximumSize providerda belgilanadi.
Keng tarqalgan xatolar
- Foydalanuvchi sessiya/huquq natijasini muddatsiz cache qilish ban yoki role o'zgarishini kechiktiradi.
Mashqlar
- Mavzu tahriridan keyin cache invalidationni va ikki tenant uchun key ajralishini tekshiring.
- Bir so'rovni keshlab, TTL tugagach qayta hisoblanishini log bilan ko'rsating.
Teglar: pdp, modul-10, nazariya