【问题标题】:Caching for database questions缓存数据库问题
【发布时间】:2011-06-09 19:44:17
【问题描述】:
  • 当我们说像使用 memcahe 或 Redis 这样的缓存时,这是用户和缓存之间的 1:1 缓存,还是我们可以缓存 1 项并将其用于所有用户?朋友列表之类的某些项目将是 1:1 的,每个用户都是唯一的。但是,如果我想缓存任何用户都可以使用的城市查找的自动完整列表,它会只在所有用户同时使用的缓存中存储 1 个列表,还是需要为每个用户存储 1 个列表?

  • 是否可以缓存整个 数据库,所有查找,所有 用户,他们所有的照片等使用 memache还是redis?

  • 所以从上面的例子来看:一个朋友 列表将从缓存中清除 当用户注销时。但是有些东西 像城市自动完成将留在 缓存 24-7-365,我说的对吗?

【问题讨论】:

    标签: caching memcached redis


    【解决方案1】:

    它可以是 - 如果您的缓存键包含一个用户 ID,该记录将用于单个用户。

    如果需要,您可以缓存所有内容,但显然这需要相当多的内存,如果您这样做,则可能值得使用 redis 或 memcachedb 作为您的主要数据存储而不是缓存。不过,您可能想对照片做一些不同的事情 - 您可以将它们存储为 blob,但将它们存储在文件系统中并在数据库中保留路径/URL 可能更有效。

    缓存通常独立于用户会话 - 相反,您可以为每个密钥设置过期时间、跟踪自上次访问密钥以来的时间,或者在写入时过期。

    【讨论】:

    • 如果您要选择一个:memcache 或 Redis,会是哪一个(用于缓存,而不是数据存储)?
    • 对于简单的键/值缓存,它们大致相同——我会使用 redis,但主要是因为这是我最有经验的。当您拥有更复杂的数据结构或更大的规模时,差异就会出现 - 在默认设置中,memcached 在跨多个节点工作时会更好一些,而 redis 对列表/集有更好的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2018-01-11
    • 1970-01-01
    • 2021-07-12
    相关资源
    最近更新 更多