用Redis缓存简单查询是否值得?

时间:2018-09-10 17:22:17

标签: mysql caching redis

  1. 我想知道是否值得缓存以下查询:

    选择*来自ID为1的用户

  2. 否则,复杂查询也应如此,因为无论如何它们都将由数据库缓存来缓存。

  3. 使用Redis缓存单个数据库查询是否有意义?还是仅从缓存多个查询的结果(例如整条路线)中受益?

  4. Redis(在内存中)比DB缓存(也在内存中)快。在那种情况下,在Redis中缓存单个查询也很有意义,但是我认为DB和Redis缓存的性能应该相似。

1 个答案:

答案 0 :(得分:1)

如果您的应用很可能从缓存中读取查询结果,而不是再次运行SQL查询,那么值得将其缓存。或者,如果您需要更快的结果而不是任何SQL查询都可以运行。

SQL查询的成本并不一定会损害您的应用性能。像SELECT * FROM users WHERE id = 1这样的SQL查询既简单又高效,它最多可以查询一行(假设id是主键)。

如果您使用SQL进行大范围数据的复杂查询,则可能会花费更长的时间,因此读取缓存结果的相对好处会更大。

但是,即使是一个简单的查询,每小时运行一百万次也可能是昂贵的。如果您如此频繁地运行查询以至于降低了应用的性能,那么缓存是个不错的策略。

有很多变量,它们取决于您特定的应用行为和约束。没人能为您回答这个问题。

  • 数据库中的数据多久更改一次,从而使缓存的副本过时?
  • SQL查询的效率如何?这是一个简单的查询,无论如何还是很快,还是运行SQL版本时可能需要整整几秒钟的复杂查询?
  • 您的应用是否可以忍受运行SQL查询所需的时间?当然,所有应用程序都说他们希望“尽可能快”地获得结果,但这并不是可衡量的要求。 SQL查询是否足够快??
  • 您多久运行一次查询?在某种程度上,您需要使用一些次要的优化,如果不经常使用该查询,那将不值得花时间编写代码。