したがって、他のことを言う前に、ドキュメントごとに:
警告: KEYS は、細心の注意を払って本番環境でのみ使用する必要があるコマンドと考えてください。大規模なデータベースに対して実行すると、パフォーマンスが低下する可能性があります。このコマンドは、デバッグおよびキースペース レイアウトの変更などの特別な操作を目的としています。通常のアプリケーション コードでは KEYS を使用しないでください。キースペースのサブセットでキーを見つける方法を探している場合は、セットの使用を検討してください。
したがって、ハッシュにカウントする必要があるものは何でもスローして、物事が乱雑にならないように HLEN を実行できる場合は、それが望ましい方法です。
警告はさておき、これは 100% Lua スクリプトとして実行する必要があります。ここでのボトルネックは間違いなくネットワーク スループットであり、Lua はこれを完全に解決します。Lua はスクリプト サーバー側全体を実行するため、すべてのキーを取得し、ネットワーク転送なしで Redis ボックスでそれらをすべてカウントし、カウントを送り返すだけです。スクリプトは単純です。
local all_keys = redis.call('KEYS', ARGV[1])
return #all_keys
次に、引数として「foo*」だけを使用して呼び出します。純粋な Redis では、(未テスト):
EVAL "your_script.lua" 0 'foo*'
これまで Ruby で Redis を使用したことがないので、それを Ruby に変換する必要があります。