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 目前附近的本机适配器不提供此功能。但是,这有点 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 本身。

于 2015-02-26T01:41:14.433 回答