Руководство для начинающих по Redis: использование Redis с Node

Node.js

yuan wen : сегмент fault.com/ah/119000001…

использовать Redis в узле

Сначала установите драйвер: npm install redis

Redis поддерживает различные типы данных, часто используемые пары ключ/значение, хеш-таблицы, связанные списки, наборы и т. д.

Обычные данные
Давайте сначала посмотрим, как хранятся и извлекаются пары ключ/значение.

Обычные данные

Давайте сначала посмотрим, как хранятся и извлекаются пары ключ/значение.

var redis = require('redis')

var client = redis.createClient(6379, '127.0.0.1')
client.on('error', function (err) {
  console.log('Error ' + err);
});

// 1 键值对
client.set('color', 'red', redis.print);
client.get('color', function(err, value) {
  if (err) throw err;
  console.log('Got: ' + value)
  client.quit();
})

хеш-таблица

Хэш-таблицы чем-то похожи на Карты в ES6.

client.hmset('kitty', {
  'age': '2-year-old',
  'sex': 'male'
}, redis.print);
client.hget('kitty', 'age', function(err, value) {
  if (err) throw err;
  console.log('kitty is ' + value);
});

client.hkeys('kitty', function(err, keys) {
  if (err) throw err;
  keys.forEach(function(key, i) {
    console.log(key, i);
  });
  client.quit();
});

связанный список

Связанный список Redis похож на массив JS.lpush добавляет значения в связанный список, а lrange получает элементы связанного списка в пределах диапазона параметров start и end.Конец параметра равен -1, что указывает на то, что это последний элемент в связанном списке. Примечание: по мере увеличения длины связанного списка выборка данных будет постепенно замедляться (O(n) в нотации Big O)

client.lpush('tasks', 'Paint the house red.', redis.print);
client.lpush('tasks', 'Paint the house green.', redis.print);
client.lrange('tasks', 0, -1, function(err, items) {
  if (err) throw err;
  items.forEach(function(item, i) {
    console.log(' ' + item);
  });
  client.quit();
});

собирать

Подобно Set в JS, элементы в наборе должны быть уникальными, а его производительность: O(1) в нотации Big O.

client.sadd('ip', '192.168.3.7', redis.print);
client.sadd('ip', '192.168.3.7', redis.print);
client.sadd('ip', '192.168.3.9', redis.print);
client.smembers('ip', function(err, members) {
  if (err) throw err;
  console.log(members);
  client.quit();
});

канал

Redis выходит за рамки традиционных обязанностей по хранению данных, он также предоставляет каналы, которые представляют собой механизмы доставки данных, обеспечивающие функциональность публикации/книги.

var redis = require('redis')
var clientA = redis.createClient(6379, '127.0.0.1')
var clientB = redis.createClient(6379, '127.0.0.1')

clientA.on('message', function(channel, message) {
  console.log('Client A got message from channel %s: %s', channel, message);
});
clientA.on('subscribe', function(channel, count) {
  clientB.publish('main_chat_room', 'Hello world!');
});
clientA.subscribe('main_chat_room');