订阅-redis del vs lru逐出?

zpqajqem  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(307)

如果我使用redis来检查一个唯一的消息是历史上处理过的还是当前正在处理的(为了防止发布/订阅重复的消息处理),并且我不希望再次读取这个kv对,那么我应该删除消息处理程序末尾的kv对,还是让lru逐出最终删除它?处理消息所需的时间将远远超过重复消息之间的延迟。
对于上下文,这是处理过程的一些js伪代码:

// Message comes in
const messageHandler = (message) => {
  const duplicate = checkMessageInRedis(message.ID)
  if (duplicate) return
  registerMessageInRedis(message.ID)
  // ... do some stuff to the message
  deleteMessageInRedis(message.ID) // DO I BOTHER WITH THIS??? OR LET EVICTION DELETE IT?
}

我想问题是:逐出删除是否比del事务更占用资源?如果是的话,增加多少?

pbossiut

pbossiut1#

最好的方法是在向redis添加消息时提供ttl(生存时间)。
i、 e.registermessageinredis(消息id,ttl)
这将在ttl过期后自动删除消息,并将节省显式删除的额外网络往返成本。

相关问题