[REDIS] Node.js를, (안녕) 레디 스 및 멀티 명령
REDISNode.js를, (안녕) 레디 스 및 멀티 명령
나는 Node.js를하고 레디 스 놀아있어하고이 명령을 통해 라이브러리를 hiredis 설치된
npm install hiredis redis
나는 여기에 여러 예제를 보았다 :
https://github.com/mranney/node_redis/blob/master/examples/multi2.js
라인 (17)에 그것은 말한다
// you can re-run the same transaction if you like
어떤 명령이 실행이 완료되면 내부 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 트랜잭션 및 (내부 multi.queue 객체가 해제하지 않기 때문에) 100 (100) 사용자의 트랜잭션을 실행할 것이다.
옵션 1 :해야 내가 effectivly 함수의 실행의 끝에서 죽일 것 http.createServer 콜백 함수 내부의 다중 객체를 생성? 얼마나 비싼 CPU 사이클의 관점에서 만들고이 객체 BE의 파괴 것?
옵션 2 : 다른 옵션) (multi.exec의 새 버전을 생성하는 것, 대기열을 취소합니다 multi.execAndClear 같은 ()가 현재 실행 레디 스 명령의 무리가.
당신은 어떤 옵션을 걸릴 것? 나는 옵션 하나가 더 생각 - 우리는 하나 개의 객체를 죽이고있어 대신 체리는 그것의 부분을 따기 - 난 그냥 노드와 자바 스크립트 모두 새로운 브랜드 해요 확인과 같이되고 싶어요.
해결법
-
==============================
1.node_redis의 다중 객체 생성하기가 매우 저렴합니다. 부작용으로, 나는 당신이 그들을 다시 사용할 수 있도록 재미있을 것이라고 생각하지만, 이것은 분명히 어떤 상황에서 유용하다. 가서 새로운 다중 객체에게 새 트랜잭션을 필요로 할 때마다 만들 수 있습니다.
node_redis의 다중 객체 생성하기가 매우 저렴합니다. 부작용으로, 나는 당신이 그들을 다시 사용할 수 있도록 재미있을 것이라고 생각하지만, 이것은 분명히 어떤 상황에서 유용하다. 가서 새로운 다중 객체에게 새 트랜잭션을 필요로 할 때마다 만들 수 있습니다.
한 가지 유념해야 할 것은 당신이 실제로 레디 스 서버에 원자 적으로 실행하는 모든 작업이 필요한 경우에만 멀티 사용해야한다는 것입니다. 방금 효율적으로 네트워크 대역폭을 저장하고 관리 할 수있는 콜백의 수를 줄이기위한 일련의 명령까지 배치하고 싶은 경우에, 다만 개별 명령, 다른 후 하나를 보냅니다. node_redis 자동으로 "파이프 라인"의 순서로 서버에 이러한 요청, 개별 명령 콜백 (있는 경우) 순서로 호출됩니다 것입니다.
from https://stackoverflow.com/questions/4970727/node-js-hiredis-and-the-multi-command by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스 (오류) ERR 작업이 허용되지 않습니다 (0) | 2020.01.18 |
---|---|
[REDIS] JedisPoolConfig는 GenericObjectPoolConfig에 할당 할 수없는 (0) | 2020.01.18 |
[REDIS] 이전의 것들에 의존하는 파이프 라인의 여러 명령을 레디 스 수 있습니까? (0) | 2020.01.18 |
[REDIS] 인 - 교통 암호화와 AWS ElastiCache에 연결 (0) | 2020.01.18 |
[REDIS] 레디 스-CLI에서 쿼리 타이밍? (0) | 2020.01.18 |