Redis n'est pas conçu pour stocker de très gros objets. Vous n'êtes pas censé stocker toute votre collection dans une seule chaîne dans Redis, mais utilisez plutôt la liste ou l'ensemble Redis comme conteneur pour vos objets.
De plus, le format cornichon n'est pas optimisé pour l'espace... il faudrait un format plus compact. Protocol Buffers, MessagePack ou même JSON pur sont probablement meilleurs pour cela. Vous devriez envisager d'appliquer un algorithme de compression léger avant de stocker vos données (comme Snappy, LZO, Quicklz, LZF, etc ...).
Enfin, les performances sont probablement liées au réseau. Sur ma machine, récupérer un objet de 20 Mo depuis Redis prend 85 ms (et non 3 secondes). Maintenant, si j'exécute le même test en utilisant un serveur distant, cela prend 1,781 secondes, ce qui est attendu sur ce réseau à 100 Mbit/s. La durée dépend entièrement de la bande passante du réseau.
Dernier point :assurez-vous d'utiliser une version récente de Redis - un certain nombre d'optimisations ont été faites pour traiter les objets volumineux.