Mam dwa Redis klientów, w jednym pliku mam prosty skrypt ustawienie i usunięte Redis klawiszy:Redis wydarzenie KEYSPACE nie wypalania
var redis = require("redis");
var client = redis.createClient('6379','127.0.0.1');
client.config("SET","notify-keyspace-events", "KEA");
client.set("string key 1", "string val", redis.print);
client.set("string key 2", "string val", redis.print);
client.set("placeholder","placeholder value", redis.print);
client.del("string key 1", redis.print);
client.del("string key", redis.print);
w drugim pliku, mam klienta Redis służąc jako abonenta :
var redis = require("redis");
var subscriber = redis.createClient('6379','127.0.0.1');
const REDIS_PUB_MESSAGE = 'redis_pub_message';
const EVENT_SET = '[email protected]__:set';
const EVENT_DEL = '[email protected]__:del';
const SPACE_SPECIFIC_KEY = '[email protected]__:placeholder set';
const EVENT_SPECIFIC_KEY = '[email protected]__:placeholder set';
const SPACE_SPECIFIC_KEY_set = '[email protected]__:set placeholder';
const EVENT_SPECIFIC_KEY_set = '[email protected]__:set placeholder';
subscriber.on('message', function(channel, key) {
switch (channel) {
case SPACE_SPECIFIC_KEY_set:
console.log('space specific key channel:',channel,'key:',key);
case EVENT_SPECIFIC_KEY_set:
console.log('event specific key channel:',channel,'key:',key);
case EVENT_SPECIFIC_KEY:
console.log('space specific key channel:',channel,'key:',key);
case SPACE_SPECIFIC_KEY:
console.log('event specific key channel:',channel,'key:',key);
}
});
klucz „zastępczy” jest ustawiona, więc jest jakiś powód, że nie otrzymuję żadnego wyjścia w „wiadomości” przewodnika?
masz rację, to jest problem. ale jedno pytanie o twoją odpowiedź - "jeśli chcesz oglądać na wszystkie wydarzenia", nie próbuję być niewiarygodny, ale dlaczego zamiast wiadomości zamiast wiadomości? Obecnie nie widzę celu pmessage. –
Cóż, jeśli używasz tylko subskrypcji opartej na kanale, otrzymasz tylko jeden typ wiadomości, ponieważ nazwa kanału odpowiada typowi wiadomości. Na przykład, jeśli zasubskrybujesz \ _ \ _ keyevent @ 0 \ _ \ _: del, otrzymasz tylko del zdarzenia dla wszystkich kluczy. Jeśli potrzebujesz także innych wydarzeń, musisz zasubskrybować kilka kanałów lub użyć subskrypcji opartej na wzorcach. –
Didier, przepraszam, niezupełnie cię rozumiem. W odpowiedzi wygląda na to, że mogę zasubskrybować określony klucz, tak jak w przypadku wiersza "const EVENT_SPECIFIC_KEY_del = '__keyevent @ 0 __: del placeholder';" to nasłuchuje klucza zwanego "placeholder" ... Nadal nie rozumiem celu pmessage vs. message. Być może, gdybym zrozumiał tę dychotomię, zrozumiałbym, co masz na myśli. –