Я ищу эффективную функцию для очистки кеша redis.Максимальная арность функции рубина?
У меня есть вызов метода, который возвращает количество ключей от Redis:
$redis.keys("foo:*")
Это возвращает все ключи, которые начинаются с «Foo:». Затем я хотел бы удалить все значения для этих ключей.
One (много памяти) способ сделать это:
$redis.keys("foo:*").each do |key|
$redis.del(key)
end
Я хотел бы избежать загрузки всех ключей в памяти, а затем делает многочисленные запросы к серверу Redis.
Другой способ, который мне нравится использовать оператор пейнтбольный:
keys = $redis.keys("foo:*")
$redis.del(*keys)
Проблема заключается в том, что я не знаю, что максимальная арностью метода $redis.del
, ни какого-либо метода рубина, я могу» t, похоже, найти его в Интернете.
Какова максимальная арность?
Я получаю «SystemStackError: уровень стека слишком глубокий» для более чем 130_000 аргументов на моей машине. –
То же самое для меня. И иногда рубины сильно падают: https://gist.github.com/DNNX/6243859 – DNNX
Вероятно, есть место для улучшения реализации ... В частности, когда предоставлен только один аргумент splat, его можно просто назначить 'args' вместо того, чтобы делать некоторые рекурсивные вещи под капотом. –