Sim, o redis é bom para isso. Mas para entender a essência, existem basicamente duas abordagens para o armazenamento em cache. Dependendo se você usa um framework (e qual) ou não, você pode ter a primeira opção disponível no padrão ou com o uso de um plug-in:
- Consultas de banco de dados de cache, ou seja - as consultas selecionadas e seus resultados serão mantidos em redis para acesso mais rápido por um determinado tempo ou até limpar o cache (útil após a atualização do banco de dados). Neste caso, você pode usar o cache de consulta mysql embutido, será mais simples do que usar o armazenamento de valor-chave adicional, ou você pode substituir a integração de banco de dados padrão com sua própria classe usando o cache (por exemplo http://pythonhosted.org /johnny-cache/).
- Caching personalizado, ou seja, criar suas próprias estruturas para serem mantidas em cache e reabastecê-las periodicamente ou manualmente com dados obtidos do banco de dados. É mais flexível e potencialmente mais poderoso, porque você pode usar recursos redis integrados, como listas ou conjuntos classificados, que tornam a sobrecarga de atualização muito menor. Requer um pouco mais de codificação, mas geralmente oferece melhores resultados, pois é mais personalizado. Um bom exemplo é manter os principais artigos na forma de lista redis de ids e, em seguida, acessar o(s) artigo(s) serializado(s) com determinado id também do redis. Você pode manter esse artigo não normalizado - ou seja. O objeto serializado pode conter o ID do usuário, bem como o nome do usuário, para que você possa reduzir ao mínimo a sobrecarga de consultas adicionais.
É sua a decisão de qual abordagem adotar, eu pessoalmente quase sempre sigo a abordagem número dois. Mas, é claro, tudo depende de quanto tempo você tem e o que o aplicativo deve fazer - você também pode começar com o cache de consulta mysql e, se os resultados não forem bons o suficiente, mude para redis e cache personalizado.