redis를 통해 채널에 게시하는 사용자가 여러 명인 경우 어떻게됩니까? 내가 db에 레코드를 추가하는 PHP 스크립트가 있다고 가정 해 보겠습니다. 2 명의 사용자가 모두 동일한 채널을 구독하고 있으며 동시에 둘 다 데이터베이스에 레코드를 입력하고 있습니다. 둘 다 php 스크립트를 사용하여 db에 항목을 제출합니다. 그런 다음 php-redis를 사용하여 채널에 게시합니다. 그러나 2 명 이상의 사람들이 동시에 그것을한다면 어떻게됩니까? redis가 첫 번째 요청을 "잠그고"다음 요청에 대해 "잠금 해제"합니까?Redis 하위/다중 게시판이 동시에 게시됩니다.
1
A
답변
4
Redis는 단일 스레드이므로 첫 번째 명령이 먼저 발생해야하며 잠글 필요가 없습니다. 단일 요청에 소요되는 시간이 실제로 명령을 처리하는 것이 아니라 네트워크 대기 시간에 있기 때문에 일반적으로 차단을 알 수 없습니다.
0
실용적인 점은 주어진 채널에서 가능한 중복 메시지에 대한 가정을하지 않으며 여러 채널에서 특정 메시지 시퀀싱을 가정하지 않도록 청취자를 작성해야합니다.
다른 말로하면 주어진 채널에 메시지를 생성하는 프로세스가 여러 개인 경우 주어진 메시지를 게시 할 프로세스가 무엇인지 또는 여러 게시자가 경합을 가지고 일종의 복제본을 게시 할 수 있는지에 대한 가정을하지 않아야합니다. 그러한 의미론이 필요한 경우 SETNX 또는 HSETNX와 같은 Redis (원자) 프리미티브를 사용하여 자체 잠금을 구현해야 할 수도 있습니다.
관련 문제
- 1. Canvas 게시판의 게시판이 없습니다.
- 2. Redis 복제 및 Redis Sharding (클러스터) 차이
- 3. WordPress 쿼리가 두 개의 Divs에 게시됩니다.
- 4. 웹 사이트가 다운 된 후 다시 게시됩니다.
- 5. 페이지 새로 고침시 Firefox가 iframe에 다시 게시됩니다.
- 6. redis-2.2.5를 수행 한 후 redis-stat가 생성되지 않았습니다.
- 7. Redis Key를 설정 한 후에도 Redis Key의 만료는 어떻게 유지합니까?
- 8. Redis Expire가 작동하지 않습니다.
- 9. Redis Blocking 저장
- 10. Redis 구성 파일의 변수
- 11. Redis logrotate 구성
- 12. Faye 또는 Redis Pubsub
- 13. 관계형 데이터베이스에서 Redis 액세스
- 14. Redis _changes 피드?
- 15. redis 구조, 성능
- 16. zrank about redis
- 17. redis 키를 어떻게 감시합니까?
- 18. Redis 성능 문제?
- 19. Redis 키 관리
- 20. redis memory usage
- 21. Node.js - Redis 튜토리얼
- 22. NoSQL/Redis Scaling Theory
- 23. 동시에
- 24. 동시에
- 25. 내 버튼에 다시 게시판이 없습니까? div에 묶여있는 Javascript에 연결했습니다.
- 26. Redis 키 이름 지정 규칙?
- 27. stdin 구성으로 redis-server 실행
- 28. BLPOP을 사용하는 redis 작업 대기열
- 29. ActiveRecord :: Base가 Redis 연결을 설정합니다
- 30. Redis Rails 인증은 어떻게 작동합니까?
Redis의 모든 작업은 "원자"입니다. –