2012-10-15 94 views
2

我们使用Redis进行键值普通缓存和缩略图缓存。在具有100多个站点Redis的略图的数据库有50万个按键,无需像独特的前缀的机器:Redis密钥匹配性能

"sorl-thumbnail||image||6c4a67b016c4f867b9fdd3e5c5609887" 
"sorl-thumbnail||image||ad7c56bd5461e9061604867d056b5de8" 
"sorl-thumbnail||image||655ad6bb21129326ef4618df83a0f1f7" 
"sorl-thumbnail||thumbnails||871641bfefa6250518fe52b86cf742c9" 
"sorl-thumbnail||thumbnails||570565770557013bada8c1fe2cb3d658" 
"sorl-thumbnail||image||c01134f4a8746d24c6d62543419bbb3a" 
"sorl-thumbnail||image||ecc5afb281bc78fefe3046e2cc3f972a" 
"sorl-thumbnail||image||670f1f1b6c5660f46053a484e22a4071" 

是否使用前缀像001,002,003,...... 100网站IDS增加访问Redis的性能?

+0

号为什么会这样? – Mahn

+1

那么,如果你使用每个站点的散列而不是单个的密钥来存储它们的缩略图,它可能会更有效率,但除此之外,只要你知道密钥名称,我们仍然在谈论O(1)次复杂性(除非你使用KEYS,我希望你不这样做) – Mahn

+0

你好,我使用get和设置字符串如: GET“sorl-thumbnail || image || 670f1f1b6c5660f46053a484e22a4071” – yet

回答

3

因为主字典的数据结构是散列表而不是树,所以如果您有大量具有共同前缀的密钥,Redis的一般性能不会受到影响。

使用某些区分数据为您的密钥添加前缀不会真正提高性能。