A eficiência é menos chamadas de rede vs mais dados . Os dados no Redis são apenas blobbados, na maioria das vezes uma única chamada de API mapeia 1:1 com uma operação do servidor redis. O que significa que você pode pensar nas implicações de perf como simplesmente baixar um blob de conjunto de dados json da memória de um servidor remoto e desserializá-lo no cliente - o que é efetivamente tudo o que acontece.
Em algumas APIs, como GetAll(), são necessárias 2 chamadas, 1 para buscar todos os ids no conjunto Entity e a outra para buscar todos os registros com esses ids. O código-fonte do Redis Client é bastante acessível, então recomendo dar uma olhada para ver exatamente o que está acontecendo.
Como você tem apenas 3 categorias, não são tantos dados extras que você está economizando tentando filtrar no servidor.
Então suas opções são basicamente:
- Faça o download de todo o conjunto de dados da entidade e filtre no cliente
- Mantenha um mapeamento de índice personalizado em Categoria> IDs
- Mais avançado:use uma operação LUA do lado do servidor para aplicar a filtragem do lado do servidor (requer Redis 2.6)