使用 TTL 与主动发送请求以使密钥无效以使缓存中的密钥无效的优缺点是啥?

Posted

技术标签:

【中文标题】使用 TTL 与主动发送请求以使密钥无效以使缓存中的密钥无效的优缺点是啥?【英文标题】:What are the pros and cons of using TTL vs actively sending a request to invalidate a key to invalidate a key in a cache?使用 TTL 与主动发送请求以使密钥无效以使缓存中的密钥无效的优缺点是什么? 【发布时间】:2021-12-31 03:29:52 【问题描述】:

对于 Redis 等缓存的密钥失效,是否有任何最佳实践?我应该在 TTL 过期后让密钥失效,还是应该对相关密钥调用 delete 以从缓存中删除该密钥?

主动调用删除操作会增加负载并损害缓存的吞吐量吗?

【问题讨论】:

【参考方案1】:

您似乎在询问在将 Redis 用作缓存时如何处理 Redis 中的内存管理。 Redis 实现了一些配置maxmemory maxmemory-policymaxmemory-samplesreplica-ignore-maxmemoryactive-expire-effort。有关这些的更多 details,请参阅您的版本的自我文档。

Redis 配置允许您在 CPU、内存和延迟方面进行权衡,而无需进行外部内存管理。话虽如此,当您的应用程序知道状态更改时,DEL 可用于使密钥无效。并且 TTLs 集可以与一些内存管理策略一起使用。

【讨论】:

以上是关于使用 TTL 与主动发送请求以使密钥无效以使缓存中的密钥无效的优缺点是啥?的主要内容,如果未能解决你的问题,请参考以下文章

php 带密钥和ttl的APCu缓存

作为银行账户持有人,我可以使我之前提供的所有格子身份验证无效吗?

谷歌方向API找不到我的API密钥

如何修复我的代码以使其发送 json 数据作为对邮递员 GET 请求的响应?

在反应应用程序中保护 Firebase API 密钥以使其无法公开访问的最佳方法是啥? [复制]

如何使用 Knockout-Validation 将无效项目添加到 observableArray 以使 validObservable 无效