2010-04-15 3 views
3

최근에 나는 Redis의 도움으로 웹 사이트의 온라인 사용자를 추적하기위한 2 가지 접근 방식을 제시하는 멋진 블로그 게시물을 발견했습니다.Redis를 통해 온라인 사용자를 추적하기위한 2 가지 접근 방식. 어느 것이 더 빠릅니까?

1) 스마트 키와 만료 http://techno-weenie.net/2010/2/3/where-s-waldo-track-user-locations-with-node-js-and-redis

2) 설정-S를 설정하고 http://www.lukemelia.com/blog/archives/2010/01/17/redis-in-practice-whos-online/

이 하나가 빠르고 왜해야하는 판단 할 수있는 교차?

답변

4

특정 사용자가 온라인 상태인지 여부를 알기위한 첫 번째 방법은 훨씬 빠릅니다. 단일 키를 읽는 것보다 빠른 것은 없습니다.

특정 페이지에서 사용자를 찾는 것이 명확하지 않습니다 (교차 또는 와일드 카드 키의 성능에 대해 열거 한 숫자를 보지 못했습니다). 그러나 설정이 어느 구현에서든 성능 문제를 일으킬 정도로 클 경우, 어쨌든 그들을 모두 표시하는 것이 실용적입니다.

사용자를 친구 목록에 매치하려면 아마도 첫 번째 방법도 함께 사용해야합니다. 목록에있는 모든 사람의 상태를 확인하는 수백 번의 작업을 수행하더라도 많은 수가있는 경우 여러 세트에서 교차를 능가해야합니다. 기록을 유지하기가 어렵습니다.

키를 사용하여 수행 할 수없는 작업, 특히 세트의 모든 항목을 가져 오는 것이 특정 항목이 세트에 있는지 확인하는 것보다 더 중요합니다.

+0

redis 라이브러리가 파이프 라인되어 있지 않으면 네트워크 대기 시간 때문에 몇 백 GET 작업이 매우 느려질 수 있습니다. – rpetrich

+0

https://stackoverflow.com/users/101970/tom-clarkson SADD와 SISMEMBER는 모두 SET와 동일한 복잡성을 갖는 O (1)이며 따라서 정중하게 "왜 아무것도 읽는 것보다 빠릅니다. 단일 키 "? :-) SET/GET이 SADD/SISMEMBER보다 훨씬 뛰어나다는 것을 보여주는 통계가 있습니까? 나는 진정한 지적 호기심에서 벗어나 화염 전쟁을 시작할 의도가 없다는 것을 의미합니다 ... – Joel

+0

@Joel의 복잡성은 성능의 한 측면이지만 두 가지 작업이 동일한 복잡성을 나타낼 수는 있지만 반드시 두 가지가 동일한 성능. 제 랩탑에서 redis-benchmark는 48K/sec SET 작업 대 52K/sec SADD를 수행합니다. –