redisコレクションに変更が加えられたときにコールバックを実行できるようにしたい。コールバックはキーと値を入力として受け取ります。このようなことは可能でしょうか?Redisの変更を聞く?
ありがとうございます。
redisコレクションに変更が加えられたときにコールバックを実行できるようにしたい。コールバックはキーと値を入力として受け取ります。このようなことは可能でしょうか?Redisの変更を聞く?
ありがとうございます。
また、syncコマンドを使用して、スレーブのようなRedisサーバに接続することもできます。簡単な紹介についてはどのようにRedis Replication Works?を参照してください。
syncコマンドの出力には2つのフェーズがあります。第1段階では、サーバーはデータベースdump.rdbファイルを戻します。ファイルが送信されると、AOFフォーマットであるRedisプロトコルでコマンドの送信が開始されます。ここで
はあなたが何ができるかのハイレベルの画像です:
SYNC
コマンドそれは多くの作業を思わを呼び出していますが、かなり簡単にこれをハックすることができるはずです。そしてそれは良いオープンソースライブラリを作るでしょう!
EDIT:同期V/sのモニター
Monitor
は、デバッグコマンドです。応答フォーマットは、時間の経過と共に変化する(および変化する)ことができる。 Sync
はマスタ - >スレーブレプリケーションに使用されるため、よりよくサポートされます。Monitor
は、読み取り専用コマンドを含むすべてのコマンドを発行します。 Sync
は、データを変更するコマンドだけを取得します。Monitor
は、luaスクリプト内で実行される個々のコマンドを記録します。Sync
はluaスクリプト全体を転送するだけなので、スクリプトを自分で解析する必要があります。これは確かにsync
のディール・ブレーカーです。Monitor
は、成功しなかったコマンドを記録します。Sync
は、データを変更するコマンドだけを記録します。たとえば、コマンドdel non-existing-key
はモニタによって記録されますが、同期を実行すると表示されません。感謝スリッファティ!あなたは私にこのアップデートとアップデートのためのモニターを使っていることの概要を教えてください。 – fancy
@fancy私の答えの更新を見る –
つのオプション:
使用MONITOR
コマンド - それはRedisのために、あなたが分析し、あなたのコレクションに触れているときに見ることができます取得するすべてのコマンドをトレースします。
コレクションに書き込むコードを「所有する」場合は、他のコード(コールバック)を通知します。これにはRedis Pub/Subチャンネルを使用できます。
EDIT Redisのは、実際には、バージョン2.8でこの機能を実装する予定です。 Antirezのブログ記事Redis keyspace changes notification systemを参照してください。
@fancy私の答えへの更新を参照してください –
短答 - いいえ。
あなたのクライアントのredis PubSubの特定のチャンネルに公開を追加した場合にのみ、これを行うことができます。またはユーザMONITORを実行して、redisで何が起こっているのかを解析しますが、そのプロセスがredisへの接続を失った場合、あなたは戸惑います。
<dependency>
<groupId>com.moilioncircle</groupId>
<artifactId>redis-replicator</artifactId>
<version>2.5.0</version>
</dependency>
は、Javaを使用している場合。 redis-replicator
は、Redisレプリケーションプロトコルを実装しています。 詳細は、あなたがnode-redis
モジュールで使用できるパブリッシュ/サブスクライブ・メカニズムが今ありますreferences
2017年に
を参照してください。特定の文書HEREを参照してください。 (redis-mock
と併用してテストすることもできます)
同じチャネルに複数のサブスクライバ(リスナー)を置くことができます。その場合、あなたのコレクションのキーとなります。
迅速なサンプル:(実装の詳細については、ドキュメント上を参照)
sub.subscribe('myCollection');
sub.on('message', (channel, data) => {
// this is the callback you talked about
console.log(`${channel} is now ${data}`);
});
// ... later on ...
pub.publish('myCollection', [1,2,3])
// console will output:
// myCollection is now [1,2,3]
関連機能のリクエスト:https://github.com/antirez/redis/issues/83 –