2011-08-02 2 views
1

redis를 통해 채널에 게시하는 사용자가 여러 명인 경우 어떻게됩니까? 내가 db에 레코드를 추가하는 PHP 스크립트가 있다고 가정 해 보겠습니다. 2 명의 사용자가 모두 동일한 채널을 구독하고 있으며 동시에 둘 다 데이터베이스에 레코드를 입력하고 있습니다. 둘 다 php 스크립트를 사용하여 db에 항목을 제출합니다. 그런 다음 php-redis를 사용하여 채널에 게시합니다. 그러나 2 명 이상의 사람들이 동시에 그것을한다면 어떻게됩니까? redis가 첫 번째 요청을 "잠그고"다음 요청에 대해 "잠금 해제"합니까?Redis 하위/다중 게시판이 동시에 게시됩니다.

+0

Redis의 모든 작업은 "원자"입니다. –

답변

4

Redis는 단일 스레드이므로 첫 번째 명령이 먼저 발생해야하며 잠글 필요가 없습니다. 단일 요청에 소요되는 시간이 실제로 명령을 처리하는 것이 아니라 네트워크 대기 시간에 있기 때문에 일반적으로 차단을 알 수 없습니다.

0

실용적인 점은 주어진 채널에서 가능한 중복 메시지에 대한 가정을하지 않으며 여러 채널에서 특정 메시지 시퀀싱을 가정하지 않도록 청취자를 작성해야합니다.

다른 말로하면 주어진 채널에 메시지를 생성하는 프로세스가 여러 개인 경우 주어진 메시지를 게시 할 프로세스가 무엇인지 또는 여러 게시자가 경합을 가지고 일종의 복제본을 게시 할 수 있는지에 대한 가정을하지 않아야합니다. 그러한 의미론이 필요한 경우 SETNX 또는 HSETNX와 같은 Redis (원자) 프리미티브를 사용하여 자체 잠금을 구현해야 할 수도 있습니다.