数据库目前有一个表 some_table :
conn_id data
id1 - - - - - a
id1 - - - - - b
id2 - - - - - c
id3 - - - - - d
现在我的代码必须这样做:
do_something([id1,id2,id3,id4])
我目前正在进行MySQL查询:
select * from some_table where conn_id in (id1, id2, id3, id4);
并生成:
{
id1 => [a,b],
id2 => [c],
id3 => [d]
}
如果我要缓存此数据,下次执行此操作时,我会在缓存中找到id1,id2和id3的键。但是,由于缓存中没有id4,DB也不存在,我总是要查询数据库。
缓存此数据是否有意义?
我可以从缓存中获取id1,id2,id3的数据。但是对于id4,我会做一个MySQL查询:
select * from some_table where id in (id4)
哪一个会更高效?在一次,我可以在请求(do_something)中有200个id,其中任何数字都不存在。
答案 0 :(得分:0)
要澄清的事情
现在回答问题
使用select * query第一次预热缓存。 之后,每次插入或更新数据库都会在缓存中处理它们。这样就可以避免查询DB连续选择