https://www.youtube.com/watch?v=iuqZvajTOyA and http://blog.gainlo.co/index.php/2016/05/17/design-a-cache-system/