node.js - Redis:通过电子邮件删除用户 token (按值查找键)

标签 node.js express redis

我已按照本教程中有关如何使用 Node 创建基于 token 的身份验证的教程进行操作 http://www.kdelemme.com/2014/08/16/token-based-authentication-with-nodejs-redis/

我已经解决了所有问题,但我遇到了 1 个问题。

我存储 token 的方式是:

key = token

VALUE = UserData(用户名、电子邮件等)

为了保护多台设备登录,我想使现有的 token 失效,并生成一个新的 token 。在登录期间,我想检查用户的 token 是否已经存在。但是,我需要按值查找键。 (我需要通过电子邮件找到 TOKEN)。但是当我浏览 Redis 文档时,我找不到任何关于按值查找 Key 的行。

非常感谢:)

最佳答案

您基本上必须选择以下两种方法之一:完全扫描数据库或索引。正如这个问题的另一个答案中所建议的那样,全面扫描将非常低效——您将遍历整个 key 空间(或至少所有 token ),并且需要获取每个 token ,直到找到与电子邮件匹配的项。

索引可以让您更快地获得查询的答案,但会占用一些 RAM 和管理开销。虽然 Redis 不提供开箱即用的索引功能,但您可以使用常规的 Redis 数据结构和操作轻松设计它们。例如,完成您想要的事情的直接方法是为每个 token 存储另一个名称为电子邮件且其值为 token 的键。这将允许您使用单个 GET 操作发送 token 和电子邮件。

请注意,这种索引方法将有效地使 token 相关键的数量增加一倍,因此为了优化您的 RAM 消耗,您可能需要考虑其他类型的索引结构(例如,使用哈希对电子邮件 token 对进行分组,其中用作桶)。

关于node.js - Redis:通过电子邮件删除用户 token (按值查找键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30971881/

相关文章:

node.js - 如何使用 `html-pdf` 模块在 node.js 中将 html 转换为 pdf

作为下载的 Node.js 输出流

ubuntu - 无法在 ubuntu 18.04 上安装 redis-server

php - Redis nodejs 获取过滤器

c# - 使用 BookSleeve 移除 SortedSet

node.js - AWS Lambda 使用触发器创建函数

javascript - 具有两个输出目录的 TypeScript 共享代码库

node.js - 子文档的地理空间查询

node.js - 使用jade创建无序列表树

node.js - Express js - 无法重定向