I've had good luck with
Cache::Mmap and
Cache::FastMmap. I've heard good things about
Cache::Memcached for distributed longer-term storage, but I haven't used it. One nice thing about all of these is they have roughly the same interface, and so you should be able to switch between them without too much hassle if you decide to later on.