Keep your cache fresh!

We usually store our data in a relational databases for persistency.But what do we really do for prevent performance problems in high traffic applications? We develop faster and more robust applications by using caching.On the other hand, We usually use  cache-aside programming pattern.

Lets assume that,

We use the following algorithm to get data at any point in the application.

  • check local memory
  • else check redis, and update local memory
  • else fetch from source, and update redis and local memory

What are we going to do with any data change in the source? How do we keep our memory fresh?

At this point, redis will save us.

let’s look at the solution below

 

I will share the source at github as soon as possible.

happy coding!

 

 

 

HTTP/2 : Herşey zamanla değişir

Bilindiği üzere 1999 yılından bu yana HTTP/1.1 protokolunu kullanıyoruz.Teknoloji evren gibi sonsuz yönlü genişleyen bir ekosistem olduğu için HTTP protokolüde versiyon geçişleri ile kendini güncelliyor.Gelinen bu noktada HTTP/2 kullanıma sunulmuş durumda.

HTTP/2 ile gelen başlıca özellikler şunlar;

  • HTTP/1.1 concurrent olarak sunucuya belirli bir sayıda request gönderilebiliyordu.Artık multiplexed özelliği ile bu kısıtlama kaldırıldı.Buda özellikle sayfaların client tarafında yüklenmesi hızını arttıracaktır.
  • HTTP/1.1 Request için body comparison yapılabiliyordu.Fakat özellikle Headerlar için bu mümkün değildi.Buda veri transferi sırasında boşuna kaynak israfına sebep oluyordu.Bu noktada artık Header compression desteği geldi.
  • HTTP/1.1 protokolünde iletişim metin halinde gerçekleşiyordu.Artık iletişim binary olarak gerçekleşecek.Bu da iletişimin eskisinden daha hızlı bir biçimde gerçekleşmesi anlamına geliyor.
  • Server-Push bu özellik biraz karmaşık lakin kısaca client tarafından herhangi bir request olmadan sunucu tarafında veya sunucu içerisinde iletişim sağlanabilecek.

 

Bunun dışında deyinemediğim bir çok özellik mevcut.Daha detaylı açıklamalara bu adresten erişebilirsiniz.

Ayrıca Go için ilgili protokolü destekleyen güzel bir frameworkte var.

Sevgiler,

Cem