2

我正在寻找一个有效的功能来清除基于 redis 的缓存。

我有一个从redis返回许多键的方法调用:

$redis.keys("foo:*")

这将返回所有以“foo:”开头的键。接下来,我想删除这些键的所有值。

一种(内存密集型)方法是:

$redis.keys("foo:*").each do |key|
  $redis.del(key)
end

我想避免将所有键加载到内存中,然后向 redis 服务器发出大量请求。

我喜欢的另一种方法是使用 splat 运算符:

keys = $redis.keys("foo:*")
$redis.del(*keys)

问题是我不知道该方法的最大数量$redis.del,也不知道任何 ruby​​ 方法,我似乎无法在网上找到它。

最大的arity是多少?

4

1 回答 1

0

评论中的@muistooshort 有一个很好的建议,结果证明是正确的,redis 驱动程序知道如何处理数组参数:

 # there are 1,000,000 keys of the form "foo:#{number}"
 keys = $redis.keys("foo:*")
 $redis.del(keys) # => 1000000

只需将一组键传递给$redis.del

于 2013-08-15T21:34:28.943 回答