내가 Node.js를하고 레디 스 놀아 나는 여기에 여러 예제를 보면서이 명령Node.js를, (안녕) 레디 스 및 멀티 명령
npm install hiredis redis
를 통해 hiredis 라이브러리를 설치 해요 :
행에서https://github.com/mranney/node_redis/blob/master/examples/multi2.js
17 그것은 INT 것을 의미한다
// you can re-run the same transaction if you like
을 말한다 명령이 실행을 완료하면 ernal multi.queue 객체는 지워지지 않습니다.
제 질문은 http 환경에서 어떻게 처리하겠습니까? 이 경우
var http = require('http');
redis = require('redis');
client = redis.createClient()
multi = client.multi();
http.createServer(function (request, response) {
multi.set('lastconnected', request.ip); // won't work, just an example
multi.exec(function(err, replies) {
console.log(replies);
});
});
을 예를 들어, 마지막으로 연결된 사용자를 추적 (그것은 단지 하나 개의 명령을 실행하지만 따라 쉽게로이 정말 다 필요하지 않습니다), multi.exec가 연결되어 최초의 1 트랜잭션을 실행하는 것입니다 사용자 및 100 번째 사용자에 대한 100 개의 트랜잭션 (내부 다중 대기열 객체는 절대로 지워지지 않기 때문에).
옵션 1 : http.createServer 콜백 함수 내에 다중 객체를 만들어야 만합니다.이 함수는 함수 실행이 끝날 때 효과적으로 종료 할 수 있습니까? 이 객체를 생성하고 파괴하는 데 CPU 사이클 측면에서 얼마나 비쌉니까?
는 옵션 2 :는 다른 옵션은 multi.exec의 새 버전을 생성하는 것입니다(), 큐에게 순간 레디 스를 지 웁니다 multi.execAndClear 같은 일이() 명령의 그 무리를 실행.
어떤 옵션을 택하겠습니까? 나는 옵션 1이 더 좋다고 생각합니다 - 우리는 체리 피킹 대신 하나의 오브젝트를 죽이고 있습니다 - 저는 노드와 자바 스크립트 둘 다에 전혀 새로운 것을 확신하고 싶습니다.
예를 들어 설명해 주시겠습니까? –
설명에 관한 내용입니다. 설명서에 대기열이 고갈되었다고 나와 있습니다. exec를 다시 실행하고 명령을 반복하도록하면 매우 혼란 스럽습니다. – maletor