Redis DEL 与 LRU 驱逐?

Redis DEL vs LRU Eviction?

如果我正在使用 Redis 检查一个唯一的消息是否已经被历史处理或当前正在处理(为了防止 Pub/Sub 重复的消息处理),并且我不希望再次读取这个 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 事务占用更多资源?如果是的话是多少?

最好的方法是在将消息添加到 Redis 时提供 TTL(生存时间)。

即registerMessageInRedis(message.ID, ttl)

这将在 ttl 过期后自动删除邮件,并将节省显式删除的额外网络往返成本。