1

Sails を使用して Redis にデータを追加しています...正常に動作していますが、キーの EXPIRE を設定する方法がわかりません...

モデルに Sails-redis アダプター/接続を使用しています...私のモデルは次のようになります

module.exports = {
    connection: 'cache',
    attributes: {
        id: {type: 'string', primaryKey: true},
        data: {type: 'string'}

    }
};

使用するモデルを保存するには

Cache.create({id: "somekey", data: data}, function(err, data){})
4

1 に答える 1

0

私が知る限り、Waterline は現在近くにあるネイティブ アダプターではこの機能を提供していません。ただし、少しハックですが、Waterline を介して redis クライアント自体にアクセスし、作成されたモデル ID を使用してその方法でアクセスできます。

// Create the base model
Model.create({ field: value }).exec( function ( err, created ) {
  if ( created ) {
    // Then manually set expiration via native Redis adapter
    var native = Model.adapter.connections.connectionName._adapter.native;

    native( 'connectionName', null, function ( err, connection ) {
      if ( connection ) {
        connection.expire('waterline:<model name, lower case>:id:' + created.id, <timeout, in seconds>, function ( err, reply ) {
          console.log( err, reply );
        });
      }
    });
  }
});

私が望むほどきれいではありませんが、Redis 自体に組み込まれている場合、その機能を手動で記述するのも好きではありません。

于 2015-02-26T01:41:14.433 に答える