Os hashes Redis são bons para armazenar dados mais complexos, como você sugere em sua pergunta. Eu os uso exatamente para isso - para armazenar objetos com vários atributos que precisam ser armazenados em cache (especificamente, dados de inventário de um determinado produto em um site de comércio eletrônico). Claro, eu poderia usar uma string concatenada - mas isso adiciona complexidade desnecessária ao meu código de cliente e a atualização de um campo individual não é possível.
Você pode estar certo - os tutoriais podem ser simplesmente anteriores à introdução dos Hashes. Eles foram claramente projetados para armazenar representações de objetos:http://oldblog.antirez.com/post/redis-weekly-update-1.html
Suponho que uma preocupação seria o número de comandos que o Redis deve atender quando um novo item é inserido (n número de comandos, onde n é o número de campos no Hash) quando comparado a um simples comando String SET. Ainda não descobri que isso seja um problema em um serviço que atinge o Redis cerca de 1 milhão de vezes por dia. Usar a estrutura de dados certa para mim é mais importante do que um impacto insignificante no desempenho.
(Além disso, veja meu comentário sobre Redis Sets vs. Redis Strings - acho que sua pergunta está se referindo a Strings, mas corrija-me se estiver errado!)