수색…


비고

우리는 node_redis에서 기본적이고 가장 일반적으로 사용되는 작업을 다루었습니다. 이 모듈을 사용하여 Redis의 모든 기능을 활용하고 매우 정교한 Node.js 앱을 만들 수 있습니다. 강력한 캐싱 레이어, 강력한 Pub / Sub 메시징 시스템 등과 같은 다양한 라이브러리를 통해 많은 흥미로운 것을 만들 수 있습니다. 도서관에 대해 더 알고 싶으면 그들의 문서를 확인하십시오.

시작하기

node_redis는 짐작할 수 있듯이 Node.jsRedis 클라이언트입니다 . 다음 명령을 사용하여 npm을 통해 설치할 수 있습니다.

npm install redis

node_redis 모듈을 설치했으면 좋겠다. 간단한 파일 인 app.js를 만들고 Node.js에서 Redis로 연결하는 방법을 살펴 보겠습니다.

app.js

var redis = require('redis');
client = redis.createClient(); //creates a new client

기본적으로 redis.createClient ()는 각각 127.0.0.1 및 6379를 호스트 이름 및 포트로 사용합니다. 다른 호스트 / 포트가있는 경우 다음과 같이 제공 할 수 있습니다.

var client = redis.createClient(port, host);

이제 연결이 설정되면 몇 가지 작업을 수행 할 수 있습니다. 기본적으로 아래와 같이 연결 이벤트를 수신하면됩니다.

client.on('connect', function() {
    console.log('connected');
});

따라서 다음 스 니펫은 app.js로 들어갑니다.

var redis = require('redis');
var client = redis.createClient();

client.on('connect', function() {
    console.log('connected');
});

이제 터미널을 실행하여 앱을 실행하십시오. 이 스 니펫을 실행하기 전에 Redis 서버가 실행 중인지 확인하십시오.

키 - 값 쌍 저장

Node.js에서 Redis와 연결하는 방법을 알았으므로 이제 키 - 값 쌍을 Redis 저장소에 저장하는 방법을 살펴 보겠습니다.

문자열 저장

모든 Redis 명령은 클라이언트 개체에 다른 기능으로 표시됩니다. 간단한 문자열을 저장하려면 다음 구문을 사용하십시오.

client.set('framework', 'AngularJS');

또는

client.set(['framework', 'AngularJS']);

위의 스 니펫은 주요 프레임 워크에 대해 간단한 문자열 AngularJS를 저장합니다. 두 조각 모두 똑같은 것을 유의해야합니다. 유일한 차이점은 첫 번째 인수가 가변 개수의 인수를 전달하고 나중에 나중에 args 배열을 client.set() 함수에 전달한다는 것입니다. 작업이 완료되면 선택적 콜백을 전달하여 알림을받을 수도 있습니다.

client.set('framework', 'AngularJS', function(err, reply) {
  console.log(reply);
});

어떤 이유로 든 작업이 실패하면 콜백에 대한 err 인수는 오류를 나타냅니다. 키 값을 검색하려면 다음을 수행하십시오.

client.get('framework', function(err, reply) {
    console.log(reply);
});

client.get() 사용하면 Redis에 저장된 키를 검색 할 수 있습니다. 키 값은 콜백 인수 응답을 통해 액세스 할 수 있습니다. 키가 존재하지 않으면 응답 값이 비어있게됩니다.

해시 보관 중

간단한 값을 여러 번 저장해도 문제가 해결되지는 않습니다. Redis에 해시 (객체)를 저장해야합니다. 이를 위해 다음과 같이 hmset() 함수를 사용할 수 있습니다 :

client.hmset('frameworks', 'javascript', 'AngularJS', 'css', 'Bootstrap', 'node', 'Express');

client.hgetall('frameworks', function(err, object) {
    console.log(object);
});

위의 스 니펫은 각 기술을 프레임 워크에 매핑하는 Redis의 해시를 저장합니다. hmset() 의 첫 번째 인수는 키의 이름입니다. 후속 인수는 키 - 값 쌍을 나타냅니다. 마찬가지로, hgetall() 은 키 값을 검색하는 데 사용됩니다. 키가 발견되면 콜백에 대한 두 번째 인수는 객체 인 값을 포함합니다.

Redis는 중첩 된 객체를 지원하지 않습니다. 개체의 모든 속성 값은 저장되기 전에 문자열로 강제 변환됩니다. 다음 구문을 사용하여 Redis에서 개체를 저장할 수도 있습니다.

client.hmset('frameworks', {
    'javascript': 'AngularJS',
    'css': 'Bootstrap',
    'node': 'Express'
});

선택적 콜백을 전달하여 작업이 완료되면 알 수 있습니다.

모든 함수 (명령)는 대문자 / 소문자로 동등하게 호출 할 수 있습니다. 예를 들어, client.hmset()client.HMSET() 은 같습니다. 목록 저장

항목 목록을 저장하려면 Redis 목록을 사용할 수 있습니다. 목록을 저장하려면 다음 구문을 사용하십시오.

client.rpush(['frameworks', 'angularjs', 'backbone'], function(err, reply) {
    console.log(reply); //prints 2
});

위의 스 니펫은 frameworks라는 목록을 만들고 두 개의 요소를 push합니다. 그래서 목록의 길이는 이제 2입니다. 알다시피 나는 args 배열을 rpush 전달했다. 배열의 첫 번째 항목은 키의 이름을 나타내지 만 나머지는 목록의 요소를 나타냅니다. lpush() 대신 rpush() 를 사용하여 요소를 왼쪽으로 밀어 넣을 수도 있습니다.

목록의 요소를 검색하려면 다음과 같이 lrange() 함수를 사용할 수 있습니다.

client.lrange('frameworks', 0, -1, function(err, reply) {
    console.log(reply); // ['angularjs', 'backbone']
});

lrange() 세 번째 인수로 -1을 전달하여 목록의 모든 요소를 ​​가져옵니다. 목록의 하위 집합을 원하면 여기에 최종 색인을 전달해야합니다.

세트 저장하기

세트는 목록과 유사하지만 차이점은 중복을 허용하지 않는다는 점입니다. 따라서 목록에 중복 된 요소가 필요 없으면 집합을 사용할 수 있습니다. 다음은 이전 스 니펫을 수정하여 목록 대신 집합을 사용하는 방법입니다.

client.sadd(['tags', 'angularjs', 'backbonejs', 'emberjs'], function(err, reply) {
    console.log(reply); // 3
});

sadd() 함수는 지정된 요소를 사용하여 새 집합을 만듭니다. 여기서, 세트의 길이는 3이다. 세트의 멤버를 검색하려면 다음과 같이 smembers() 함수를 사용하십시오.

client.smembers('tags', function(err, reply) {
    console.log(reply);
});

이 스 니펫은 집합의 모든 구성원을 검색합니다. 멤버를 검색하는 동안 순서가 유지되지 않습니다.

이것은 모든 Redis 구동 앱에서 발견 할 수있는 가장 중요한 데이터 구조의 목록이었습니다. 문자열, 목록, 세트 및 해시 외에도 정렬 된 세트, hyperLogLog 등을 Redis에 저장할 수 있습니다. 명령 및 데이터 구조의 전체 목록을 보려면 공식 Redis 설명서를 방문하십시오. 거의 모든 Redis 명령은 node_redis 모듈이 제공하는 클라이언트 오브젝트에 표시된다는 점을 기억하십시오.

node_redis가 지원하는 몇 가지 중요한 연산.

키의 존재 확인

때로는 키가 이미 있는지 확인하고 그에 따라 진행해야 할 수도 있습니다. 그렇게하기 위해 아래와 같이 exists() 함수를 사용할 수 있습니다 :

client.exists('key', function(err, reply) {
    if (reply === 1) {
        console.log('exists');
    } else {
        console.log('doesn\'t exist');
    }
});

키 삭제 및 만료

때때로 일부 키를 지우고 다시 초기화해야합니다. 키를 삭제하려면 다음과 같이 del 명령을 사용하면됩니다.

client.del('frameworks', function(err, reply) {
    console.log(reply);
});

다음과 같이 기존 키에 만료 시간을 지정할 수도 있습니다.

client.set('key1', 'val1');
client.expire('key1', 30);

위의 코드는 키 key1에 만료 시간 30 초를 지정합니다.

증분 및 감소

Redis는 또한 증가 및 감소 키를 지원합니다. 키를 증가 시키려면 아래와 같이 incr() 함수를 사용하십시오.

client.set('key1', 10, function() {
    client.incr('key1', function(err, reply) {
        console.log(reply); // 11
    });
});

incr() 함수는 키 값을 1 씩 증가시킵니다. 다른 양만큼 증가해야하는 경우 incrby() 함수를 사용할 수 있습니다. 마찬가지로, 키를 감소 decrby() decr()decrby() 와 같은 함수를 사용할 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow