postgresql - 使任何缓存失效(刷新)的合理时间间隔是多少?

标签 postgresql caching ehcache cache-invalidation

我们决定使用缓存(不决定具体的缓存),但是今天知道我们需要通过连接到数据存储来使缓存数据失效或每2分钟刷新一次缓存数据,但我认为2分钟是不可行,因为如果你继续每 2 分钟刷新一次缓存数据,那么最好连接到数据存储本身,所以任何人都可以建议可行的时间间隔,我们可以设置为使旧日期的缓存无效并使用数据存储中的数据刷新缓存?

注意:我们使用的是spring boot,postgres

最佳答案

我认为您对缓存有点困惑。如果你缓存一个操作的结果(比如 X)两分钟,这意味着在不到两分钟内重复操作的每个人都会有 X 作为结果,两分钟后缓存失效,下一次请求操作时将再次存储,因此如果两个小时内没有人执行该操作,它将在两小时后刷新。

一个项目应该存在于缓存中的时间取决于很多因素,没有办法为所有情况计算出一个绝对可行的值。

  • 缓存操作的执行率是多少?
  • 操作结果变化快吗?你在缓存每天都在变化的东西吗?每小时?
  • 获取缓存结果的人是否可以接受旧版本的结果,可以有多旧?

我留给你这句话(在这个话题上是必须的):

"There are only two hard problems in Computer Science: 
cache invalidation and naming things."

-- Phil Karlton

关于postgresql - 使任何缓存失效(刷新)的合理时间间隔是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46469110/

相关文章:

postgresql - 错误 : connect ECONNREFUSED 127. 0.1.1:5432

android - SQLite 在 Android 上执行哪些类型的缓存?

ehcache值需要实现序列化吗?

postgresql - 在面板数据上按组、时间和日期创建条件变量

postgresql - 如何判断 Postgres 中是否启用了数据校验和功能

spring - java.lang.ClassCastException : DTOObject cannot be cast to DTOObject

java - 是否可以在没有 Terracotta Enterprise Suite 的情况下使用 Ehcache 实现分布式缓存?

java - ehcache - 限制访问

node.js - 使用 sequelize 在 postgres 中添加批量记录

mysql - 为什么直接在MySQL中修改数据后页面内容不刷新?