当前位置: 首页 > 知识库问答 >
问题:

node.js使用redis创建ttl作业

范文昌
2023-03-14
  1. 用户使用具有唯一令牌
  2. 的cookie请求/寻呼
  3. node.js在redis(?)上使用此内标识创建记录用5分钟的TTL。令牌%s具有n类型。那么redis(?)应存储带有类型的令牌。
  4. 如果用户在记录过期之前再次返回,则记录的TTL再次重置为5分钟。
  5. 如果用户不再返回并且记录过期,则会触发一个函数。
  6. 最后,我还需要记录的计数属于特定类型(即类型27)。

解决这个问题的最好办法是什么?redis是正确的选择吗?我如何计数令牌和触发器5。如果我用Redis?使用https://github.com/automattic/kue或类似的工具会是一个不错的选择?

编辑:键过期时事件可能重复。总的来说,我问,redis适合这个问题吗?如果你认为是的话,你能给出一个我应该遵循的模式的例子吗。如果不是,什么是任何其他的解决方案,甚至可能没有redis或第三方工具。

正如我在5.在上面的列表中,redis似乎不适合使用下面描述的模式来查询keys:https://redis.io/commands/keys。由于似乎没有办法对集合的单个成员(集合成员为TTL),所以我不能将令牌放入typeset或hash中。因此,我需要查询键以获得组的计数(type),这似乎不是有效的,如上面的链接所述。

即使https://redis.io/topics/notifications解决了4。在上面的列表中,我还询问“我应该去哪种模式/算法以及如何去”。我不想让你为我编码,只是需要点火花。教程、指南、录影带等。那就太好了。谢谢!

共有1个答案

商池暝
2023-03-14

为了达到你想要的目的,你有很多选项,但我在这里提供一个,从检索速度上来说,这是一个非常高效的选项,但它需要一些更多的空间。显然,这完全取决于您的用例。

假设令牌是12345,类型是A

添加令牌时(我们将使用事务处理):

MULTI
SETEX tokens:12345 300 ""
SET type:12345 "A"
INCR types:A
EXEC
PSUBSCRIBE __keyspace@0__:expired
MULTI
GET type:12345 # Returns A
DEL type:12345
DECR types:A
EXEC

为了获取特定类型的元素:

GET types:A

任何NodeJS Redis客户端都可以很好地工作。

我想说明的是,这只是你有的多种选择之一;Redis的优势之一是它的灵活性。

 类似资料:
  • 问题内容: 反正是有创建的Redis数据库,在那里密钥 必须 在一定时间后会过期吗?我知道我可以使用命令来使单个密钥失效,但是由于无论如何我都会在一定时间后使每个密钥失效,因此最好在Redis配置文件中指定此行为。 问题答案: 不可以,Redis(v3.2及更高版本)不提供自动设置新创建键的TTL的方法。您必须为创建的每个键显式设置它。

  • 我的任务是在星号中使用ARI创建一个会议,ode.js.目标是创建一个会议室并发送电子邮件邀请,这样人们就可以点击并进入会议室。我还需要一个管理网络界面来显示谁在说话,静音和其他一些东西。我在星号没有任何经验。所以我需要一些起点。本质上,我必须创建一个通道,然后添加一些SIP到它。 因此,以本页为基础:https://wiki.asterisk.org/wiki/display/AST/Aster

  • 问题内容: 我是一个nodejs程序员。现在,我有了要以Excel File格式保存的数据表。我该怎么做呢? 我发现了一些Node库。但是大多数都是Excel解析器而不是Excel Writer。我使用的是Linux Server。因此需要一些可以在Linux上运行的工具。如果您知道任何有用的库,请告诉我。 还是有办法将CSV文件(以编程方式)转换为xls文件? 问题答案: excel4node是

  • 问题内容: 在redis文档中,我发现可以通过SETNX实现基本锁: http://redis.io/commands/setnx C4发送SETNX lock.foo以获取锁 崩溃的客户端C3仍然保留它,因此Redis将以0答复C4。 C4发送GET lock.foo以检查锁是否过期。如果不是,它将hibernate一段时间并从头开始重试。 相反,如果由于lock.foo上的Unix时间早于当前

  • 我有两个微服务,我需要在它们之间实现可靠的通知。我考虑过使用redis streams——serviceA将向serviceB发送一个标识符为X的请求。一旦serviceB完成了serviceA要求的工作,它将创建/向流中添加一个新项目(该流特定于X),让它知道它已经完成了。 ServiceA可以发送多个请求,每个请求可以具有不同的标识符。所以它会阻止不同流中的新元素。 我的问题是如何删除不再需要