我想知道是否值得缓存以下查询:
选择*来自ID为1的用户
否则,复杂查询也应如此,因为无论如何它们都将由数据库缓存来缓存。
使用Redis缓存单个数据库查询是否有意义?还是仅从缓存多个查询的结果(例如整条路线)中受益?
Redis(在内存中)比DB缓存(也在内存中)快。在那种情况下,在Redis中缓存单个查询也很有意义,但是我认为DB和Redis缓存的性能应该相似。
答案 0 :(得分:1)
如果您的应用很可能从缓存中读取查询结果,而不是再次运行SQL查询,那么值得将其缓存。或者,如果您需要更快的结果而不是任何SQL查询都可以运行。
SQL查询的成本并不一定会损害您的应用性能。像SELECT * FROM users WHERE id = 1
这样的SQL查询既简单又高效,它最多可以查询一行(假设id
是主键)。
如果您使用SQL进行大范围数据的复杂查询,则可能会花费更长的时间,因此读取缓存结果的相对好处会更大。
但是,即使是一个简单的查询,每小时运行一百万次也可能是昂贵的。如果您如此频繁地运行查询以至于降低了应用的性能,那么缓存是个不错的策略。
有很多变量,它们取决于您特定的应用行为和约束。没人能为您回答这个问题。