【问题标题】:Does Redis implement the touch method?Redis 是否实现了 touch 方法?
【发布时间】:2020-07-03 05:36:22
【问题描述】:

理解这一点对于配置目的很重要。

如果它确实实现了 touch 方法,我可以安全地将 resave 设置为 false

session({
  // blah blah
  resave: false
});

我将如何着手调查此问题,因为在文档页面上没有现成的信息。

我确实找到了这个,但我认为这是一个不同的 touch()

https://redis.io/commands/touch

【问题讨论】:

    标签: express session redis


    【解决方案1】:

    是的,express-session 的 redis 连接器实现了touch。如果你查看relevant portion of the source 中的connect-redis module(这就是redis 支持express-session 的方式),你会发现它确实实现了触摸方法,除非传递了一个选项来禁用它。

    以下是相关来源:

    touch(sid, sess, cb = noop) {
      if (this.disableTouch) return cb()
    
      let key = this.prefix + sid
      this.client.expire(key, this._getTTL(sess), (err, ret) => {
        if (err) return cb(err)
        if (ret !== 1) return cb(null, 'EXPIRED')
        cb(null, 'OK')
      })
    }
    

    【讨论】:

    • 谢谢朋友!你是怎么这么快就在源头中找到它的。你能告诉我,以便我下次自己检查吗?
    • @j.a. - 我用谷歌搜索了“快速会话 redis”。第三个点击是 tj/connect-redis 的 github 链接。我打开它,确认它是我正在寻找的模块,在 lib/connect-redis.js 中找到了一个主要源文件。我打开该文件并搜索“触摸”并找到方法。开源的美妙之处在于可以找到源代码,对其进行分析最终可以回答您的任何问题。
    • 感谢主文件始终位于lib 目录中,或者您怎么知道要在那里查看。其他项目要大得多。
    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2023-04-06
    • 1970-01-01
    • 2021-12-11
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多