Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis keyspace sự kiện không kích hoạt

Bạn đã quên đăng ký khách hàng đăng ký vào một kênh cụ thể. Hơn nữa, nếu bạn muốn xem tất cả các sự kiện, bạn cần sử dụng đăng ký dựa trên mẫu.

Bạn có thể muốn làm điều gì đó như sau (chưa được kiểm tra):

subscriber.on("pmessage", function (pattern, channel, message) {
    console.log("("+  pattern +")" + " client received message on " + channel + ": " + message);
    switch (channel) {
        // blah blah blah
        // ...
    }
});
subscriber.psubscribe(''__key*__:*')

Xem thêm thông tin trong tài liệu Redis và trong các ví dụ về node_redis.

Cập nhật:

Dưới đây là một ví dụ để minh họa sự khác biệt giữa đăng ký kênh và đăng ký mẫu. Xử lý lỗi thích hợp được bỏ qua vì lợi ích ngắn gọn.

var redis = require("redis");

var client = redis.createClient('6379','127.0.0.1');
var subscriber1 = redis.createClient('6379','127.0.0.1');
var subscriber2 = redis.createClient('6379','127.0.0.1');

// First subscriber listens only to events occurring for key mykey
function S1(next) {
    subscriber1.on('message', function(channel, msg) {
        console.log( "S1: received on "+channel+" event "+msg )
    });
    subscriber1.subscribe( "[email protected]__:mykey", function (err) {
        next();
    });
}

// Second subscriber listens to events occuring for ALL keys
function S2(next) {
    subscriber2.on('pmessage', function(pattern,channel, msg) {
        console.log( "S2: received on "+channel+" event "+msg )
    });
    subscriber2.psubscribe( "[email protected]__:*", function (err) {
        next();
    });
}

// Do something with keys mykey and anotherkey
function do_something() {
    client.set("mykey","example", function( err ) {
        client.set("mykey", "another example", function( err ) {
            client.del("mykey", function( err ) {
                client.set("anotherkey","example", function( err ) {
                    client.del("anotherkey");
                });
            });
        });
    });
}

// Here we go
S1( function () {
    S2( function () {
        do_something();
    });
});

Kết quả của tập lệnh này là:

S1: received on [email protected]__:mykey event set
S2: received on [email protected]__:mykey event set
S2: received on [email protected]__:mykey event set
S1: received on [email protected]__:mykey event set
S1: received on [email protected]__:mykey event del
S2: received on [email protected]__:mykey event del
S2: received on [email protected]__:anotherkey event set
S2: received on [email protected]__:anotherkey event del

Bạn có thể thấy rằng người đăng ký đầu tiên chỉ nhận được các sự kiện cho mykey, trong khi người đăng ký thứ hai nhận được sự kiện cho tất cả các khóa.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để kết nối an toàn với Redis do Heroku lưu trữ từ dòng lệnh?

  2. Cách thiết lập trình xử lý trong RedMQ từ các sự kiện được nêu trong miền của tôi

  3. Dữ liệu cố định từ Redis sang MongoDB cho kho dữ liệu

  4. Tại sao sử dụng Redis thay vì MongoDb cho bộ nhớ đệm?

  5. Redis sentinel docker image / Dockerfile