缓存数据库问题

标签 caching memcached redis

  • 当我们说像使用 memcahe 或 Redis 这样的缓存时,这是用户和缓存之间的 1:1 缓存,还是我们可以缓存 1 个项目并将其用于所有用户?某些项目(如 friend 列表)将是 1:1 的,每个用户都是唯一的。但是如果我想缓存任何用户都可以使用的城市查找的自动完成列表,它会只在所有用户同时使用的缓存中存储 1 个列表,还是需要为每个用户存储 1 个列表?

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

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

最佳答案

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

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

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

关于缓存数据库问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4702794/

相关文章:

mongodb - MongoDB 的 Varnish ,有必要吗?

concurrency - Redis 响应时间过长

redis - 如何获取与redis中特定模式不匹配的键?

django - 在 Django 中缓存半动态 View

java - 如何实现CacheLoader以便读取@Cacheable key

python - memcache GAE 中的静态首页

获取memcached中设置的所有键

docker - Redis桌面管理器无法在docker中连接redis?

c++ - 判断缓存是回写还是通过

memcached - ServiceStack ICacheClient 增量不起作用