diff --git a/lib/kredis/migration.rb b/lib/kredis/migration.rb index fa12e68..9b24a30 100644 --- a/lib/kredis/migration.rb +++ b/lib/kredis/migration.rb @@ -30,9 +30,15 @@ def migrate(from:, to:, pipeline: nil) end end - def delete_all(key_pattern) - each_key_batch_matching(key_pattern) do |keys, pipeline| - pipeline.del *keys + def delete_all(*key_patterns) + log_migration "DELETE ALL #{key_patterns.inspect}" do + if key_patterns.length > 1 + @redis.del *key_patterns + else + each_key_batch_matching(key_patterns.first) do |keys, pipeline| + pipeline.del *keys + end + end end end diff --git a/test/migration_test.rb b/test/migration_test.rb index 032385a..40b9c5a 100644 --- a/test/migration_test.rb +++ b/test/migration_test.rb @@ -51,11 +51,19 @@ class MigrationTest < ActiveSupport::TestCase end end - test "delete_all" do + test "delete_all with pattern" do 3.times { |index| Kredis.proxy("mykey:#{index}").set "hello there #{index}" } Kredis::Migration.delete_all "mykey:*" 3.times { |index| assert_nil Kredis.proxy("mykey:#{index}").get } end + + test "delete_all with keys" do + 3.times { |index| Kredis.proxy("mykey:#{index}").set "hello there #{index}" } + + Kredis::Migration.delete_all *3.times.map { |index| "mykey:#{index}" } + + 3.times { |index| assert_nil Kredis.proxy("mykey:#{index}").get } + end end