redis コレクションに変更が加えられたときにコールバックを実行できるようにしたいと考えています。コールバックはキーと値を入力として受け取ります。このようなことは可能ですか?
ありがとう?
更新:これを読んでいる人は誰でも-これらは古い答えであり、すべて無視してください. 必要なのは、何年も前から存在する Redis Keyspace Notifications です。https://redis.io/topics/notificationsを参照してください
2 つのオプション:
コマンドを使用MONITOR- Redis に到達するすべてのコマンドをトレースし、コレクションがいつ操作されているかを分析して確認できます。
コレクションに書き込むコードを「所有」している場合は、他のコード (コールバック) に通知します。これにはRedis Pub/Subチャネルを使用できます。
編集Redis は、実際にはバージョン 2.8 でこの機能を実装する予定です。これに関する Antirez のブログ投稿を参照してください: Redis keyspace changes notification system。
sync コマンドを使用してフォロワーのように Redis サーバーに接続することもできます。Redis レプリケーションの仕組みを参照してください。簡単な紹介のために。
sync コマンドの出力には 2 つのフェーズがあります。最初のフェーズでは、サーバーはデータベースの dump.rdb ファイルを返します。ファイルが送信されると、AOF 形式でもある Redis プロトコルでコマンドの送信が開始されます。
できることの概要を次に示します。
SYNCコマンドを発行します。大変な作業に思えますが、これはかなり簡単にハッキングできるはずです。そして、それは優れたオープンソース ライブラリにもなります!
EDIT : Sync v/s Monitor
Monitorデバッグコマンドです。応答形式は、時間の経過とともに変化する可能性があります。Syncマスター -> スレーブ レプリケーションに使用されるため、より適切にサポートされます。Monitor読み取り専用コマンドを含むすべてのコマンドを発行します。Syncデータを変更するコマンドのみを取得します。Monitorlua スクリプト内で実行される個々のコマンドをログに記録します。Synclua スクリプト全体のみを転送するため、スクリプトを自分で解析する必要があります。これは確かに の契約を破るものですsync。Monitor成功しなかったコマンドをログにSync記録し、データを変更するコマンドのみをログに記録します。たとえば、コマンドdel non-existing-keyはモニターによってログに記録されますが、同期を実行しても表示されません。