Caching 数据库问题的缓存

Caching 数据库问题的缓存,caching,memcached,redis,Caching,Memcached,Redis,当我们说像使用memcahe或Redis这样的缓存时,这是用户和缓存之间的1:1缓存,还是我们可以缓存一个项目并对所有用户使用它?有些项目(如朋友列表)的比例为1:1,每个用户都是唯一的。但是,如果我想缓存任何用户都可以使用的城市查找的自动完成列表,那么它将只在所有用户同时使用的缓存中存储1个列表,还是需要为每个用户存储1个列表 是否可以缓存整个数据库 数据库,所有的查找,所有的 用户及其所有照片等使用 memache还是redis 从上面的例子来看:一个朋友 列表将从缓存中清除 当用户注销时。

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

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

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


  • 它可以是-如果缓存密钥包含用户ID,则该记录将针对单个用户

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


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

    如果选择一个:memcache或Redis,它会是哪一个(用于缓存,而不是数据存储)?对于简单的密钥/值缓存,它们基本相同-我会使用Redis,但主要是因为这是我最有经验的。当您拥有更复杂的数据结构或更大的规模时,就会出现差异——在默认设置中,memcached在跨多个节点工作时会更好一些,而redis在列表/集合方面有更好的选项。