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
データを変更するコマンドのみを取得します。Monitor
lua スクリプト内で実行される個々のコマンドをログに記録します。Sync
lua スクリプト全体のみを転送するため、スクリプトを自分で解析する必要があります。これは確かに の契約を破るものですsync
。Monitor
成功しなかったコマンドをログにSync
記録し、データを変更するコマンドのみをログに記録します。たとえば、コマンドdel non-existing-key
はモニターによってログに記録されますが、同期を実行しても表示されません。