2 abordagens para rastrear usuários on -line com redis. Qual é mais rápido?
-
27-09-2019 - |
Pergunta
Recentemente, encontrei uma boa postagem no blog apresentando duas abordagens para rastrear usuários on -line de um site com a ajuda da Redis.
1) Keys inteligentes e definindo sua expiraçãohttp://techno-weenie.net/2010/2/3/where-swaldo-track-user-locations-with-node-js-and-redis
2) Conjuntos e cruzamentoshttp://www.lukemelia.com/blog/archives/2010/01/17/redis-in-practice-whos-online/
Você pode julgar qual deve ser mais rápido e por quê?
Solução
Para saber se um usuário específico está online ou não, o primeiro método será muito mais rápido - nada é mais rápido do que ler uma única chave.
Encontrar usuários em uma página específica não é tão clara (não vi números difíceis no desempenho das teclas de cruzamento ou curinga), mas se o conjunto for grande o suficiente para causar problemas de desempenho em qualquer implementação, não é prático exibir todos eles de qualquer maneira.
Para combinar usuários com uma lista de amigos, eu provavelmente iria com a primeira abordagem também - mesmo algumas centenas de operações (verificar o status de todos na lista) devem superar o cruzamento em vários conjuntos se esses conjuntos tiverem um grande número de registros e forem difícil de manter.
Os conjuntos de redis são mais apropriados para coisas que não podem ser feitas com as teclas, principalmente onde todos os itens no conjunto são mais importantes do que verificar se um item específico estiver no conjunto.