2011-03-09 3 views
1

간략한 버전의 예를 사용하여 내가 뭘 찾고 있는지 가장 잘 설명 할 수 있습니다.혜성을위한 파이썬 메시지 캐시?

https://github.com/facebook/tornado/blob/master/demos/chat/chatdemo.py

내가 여기 MessageMixin 클래스에 관심이 있어요 : 토네이도에 대한 데모 중 하나는 간단한 채팅 서버입니다. 정적 길이의 메시지 백 로그를 유지하고 새 메시지를 사용할 수 있으면 새로운 메시지 목록의 슬라이스를 반환합니다. 또는 그렇게하는 것으로 보입니다. 나는 단순한 혜성 앱을 쓸 때와 비슷한 것을 구현했다는 것을 알고있다.

누구나 이것을 일반화하고 멋진 것들을 추가 했습니까? 나는 많은 커뮤니케이션 채널을 관리하고 잠시 동안 사용되지 않은 것을 삭제하는 방법에 특히 관심이있다. 지속성 또한 유용 할 수 있습니다.

MQ가 수행 할 수있는 것입니까?

+0

의도 한 사용 사례에 대한 정보를 더 추가 할 수 있습니까? 그것은 당신의 솔루션이 데이터베이스에서부터 XMPP에 이르는 시간 기반 검색과 어떤 종류의 pub/sub 구현 사이에있을 수 있습니다. –

+0

새로운 메시지가없는 기간 후에 사용되지 않은 채널이 사라지는 사용자가 필요에 따라 생성 한 여러 채널과 채팅합니다. 데이터베이스의 시간 기반 조회는 좋은 것처럼 들리지만 새 메시지를 기다리는 경우 클라이언트에게 어떻게 알릴 수 있습니까? –

답변

3

Redis은 기능과 함께 메시지 백 로그를 유지하고 만료 시키거나, 지정된 방의 사용자를 나열하거나, 관련된 다른 속성을 사용할 수 있습니다. 이 프로토콜은 텍스트 기반이며 Memcached 명령의 상위 집합입니다.

Ruby example using Websocket과 함께 chat as an example of pub/sub을 사용하는 설명과 Websocket, Tornado and Redis pub/sub을 사용하여 간단한 대화방을 구현하는 Python 스 니펫이 있습니다.

질문에있는 정보를 기반으로 전용 메시지 대기열 (예 : RabbitMQ)이 유용 할 수 있습니다. 메시지 볼륨, 내결함성, 복제 등의 분야에서 필요한 것을 알지 못하면 말하기 어렵습니다. Redis가 원하는 대상이 될 수도 있지만, 그렇지 않으면 매우 간단하고 프로토 타입을 신속하게 실행하여 앱의 요구 사항을 더욱 정확하게 파악할 수 있습니다.

+0

감사합니다. 레디스는 완벽 해 보입니다. 그것은 술집/하위 않았다 몰랐다. –