sql >> データベース >  >> NoSQL >> Redis

ノードでRedis期限切れイベントを受信するにはどうすればよいですか?

    実際には、特定のチャネル('[email protected]__:expired')にサブスクライブされたクライアントを使用して、「期限切れ」タイプのキーイベント通知をリッスンすることができます。 )そしてそのメッセージを聞く イベント。

    setInterval/setTimeoutまたは追加のライブラリは必要ありません

    概念実証 (動作中: NodeJS v.9.4.0でテスト済み )

    const redis = require('redis')
    const CONF = {db:3}
    var pub, sub
    //.: Activate "notify-keyspace-events" for expired type events
    pub = redis.createClient(CONF)
    pub.send_command('config', ['set','notify-keyspace-events','Ex'], SubscribeExpired)
    //.: Subscribe to the "notify-keyspace-events" channel used for expired type events
    function SubscribeExpired(e,r){
     sub = redis.createClient(CONF)
     const expired_subKey = '[email protected]'+CONF.db+'__:expired'
     sub.subscribe(expired_subKey,function(){
      console.log(' [i] Subscribed to "'+expired_subKey+'" event channel : '+r)
      sub.on('message',function (chan,msg){console.log('[expired]',msg)})
      TestKey()
     })
    }
    //.: For example (create a key & set to expire in 10 seconds)
    function TestKey(){
     pub.set('testing','redis notify-keyspace-events : expired')
     pub.expire('testing',10)
    }
    


    1. Dockerを使用したMongoDBのデプロイ

    2. RESTAPIの中間キャッシュとしてRedisを使用する

    3. 単純なMySQLデータベースをNoSQLソリューションに変換する

    4. (MongoDB Java)$pushを配列に