redis - Redis DEL 与 LRU 驱逐?
问题描述
如果我使用 redis 检查历史上是否已处理或当前正在处理唯一消息(以防止 Pub/Sub 重复消息处理),并且我不希望再次阅读此 kv 对,我是否应该打扰删除 kv pair 在消息处理程序的末尾,还是让 LRU eviction 最终删除它?消息的处理将花费比重复消息之间的延迟更长的时间。
对于上下文,这是处理过程的一些 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 过期后自动删除消息,并将节省额外的网络往返成本以进行显式删除。
推荐阅读
- sdn - 钠的 OpenDaylight 初学者教程
- c++ - 这是启动和停止线程的安全方法吗?
- python-3.x - 从网页下载所有 PDF 文件的程序
- python - 时间序列数据:填补时间序列数据和汇总值的空白
- ios - 编辑时检查文本字段文本
- javascript - 如何使用 JavaScript 将伪造的图像保存到本地文件夹?
- python - Python 等效于 R 中的“library(help = PackageName)”和“?FunctionName”(即 help() 函数)
- angular - HttpClient 不返回数据
- python - 如何从存储在 gitlab repos 中的文件中提取内容
- javascript - 将图像动态添加到这个漂亮的框架中