Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Understanding web caching (Redis)

I'm working on a web app that receives data from an API provider. Now I need a way to cache the data to save from calling the provider again for the same data.

Then I stumbled on Redis which seems to serve my purpose but I'm not 100% clear about the concept of caching using Redis. I've checked their documentation but I don't really follow what they have to say.

Let's suppose I have just deployed my website to live and I have my first visitor called A. Since A is the first person that visits, my website will request a new set of data over API provider and after a couple seconds, the page will be loaded with the data that A wanted.

My website caches this data to Redis to serve future visitors that will hit the same page.

Now I have my second visitor B.

B hits the same page url as A did and because my website has this data stored in the cache, B is served from the cache and will experience much faster loading time than what A has experienced.

Is my understanding in line with with the concept of web caching?

I always thought of caching as per user basis so my interaction on a website has no influence or whatsoever to other people but Redis seems to work per application basis.

like image 503
Seong Lee Avatar asked Oct 15 '15 21:10

Seong Lee


1 Answers

Yes, your understanding of web caching is spot on, but it can get much more complex, depending on your use case. Redis is essentially a key-value store. So, if you want application-level caching, your theoretical key/value pair would look like this:

key: /path/to/my/page
value: <html><...whatever...></html>

If you want user-level caching, your theoretical key would just change slightly:

key: visitorA|/path/to/my/page
value: <html><...whatever...></html>

Make sense? Essentially, there would be a tag in the key to define the user (but it would generally be a hash or something, not a plain-text string).

There are redis client libraries that are written for different web-development frameworks and content-management systems that will define how they handle caching (ie. user-specific or application-specific). If you are writing a custom web app, then you can choose application-level caching or user-level caching and do whatever else you want with caching.

like image 198
Rob Bailey Avatar answered Oct 26 '22 20:10

Rob Bailey