如何使用Sails为Redis记录调用EXPIRE命令

时间:2014-10-23 16:21:52

标签: node.js redis sails.js waterline sails-redis

我正在使用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){})

1 个答案:

答案 0 :(得分:0)

如我所知,Waterline并没有提供当前接近的原生适配器的此功能。但是,它有点hacky,但您可以通过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本身内置手动编写该功能时。