Keys.lol was inspired by the now defunct directory.io. Just like this website, directory.io contained pages of all bitcoin private keys. It caused quite the fuss when it was shared on the internet back in 2013 with the title "All Bitcoin private keys leaked".
If you want to try to wrap your head around how many bitcoin private keys there actually are, I can recommend watching this video:
Keys.lol contains all private keys of multiple cryptocurrencies.
These keys aren't stored on the server, that would take an impossible amount of disk space.
Instead, the keys are generated whenever a page is opened.
The seeds used to generate the private keys are derived from the page number. For example, on page 10, the first seed is:
(10 - 1) * 128 + 0 = 1152
pages contain 128 keys each, so the last seed on page 10 is:
(10 - 1) * 128 + 127 = 1279
This simple formula is repeated for each page, until the maximum seed of 2^256 is reached.
The Keys.lol website runs on the latest version of PHP and Laravel.
New updates are automatically deployed to the server via my home-grown deployment script for Laravel.
The code that generates the keys is written in Go and is open-source. Originally I tried generating the keys with PHP too, but that was simply too slow (as in, at least 5+ seconds per page).