我有一个邮件队列。我想删除Newsletter
该队列中的所有作业,只留下sign_up
邮件。我基本上需要找到包含子字符串'Newsletter'的工作。如何在 Rails 控制台或 redis-cli 中执行此操作?
问问题
1160 次
2 回答
2
据我了解,您基本上只是想以原子方式删除带有字符串“Newsletter”的键作为单个事务。这样做的方法是:
redis-cli -n [some_db] -h [some_host_name] EVAL "return redis.call('DEL', unpack(redis.call('KEYS', '*' .. ARGV[1] .. '*')))" 0 Newsletter
您在上面的代码中所做的是运行一个 lua 脚本,该脚本查询数据库 [some_db] 中包含子字符串“Newsletter”的所有键。然后将它们全部删除。这一切都是作为一个事务完成的,因此从KEYS
运行到删除所有相关键的时间,在 Redis 上没有运行其他命令。
相关讨论在这里。
于 2013-06-14T20:29:51.137 回答
0
这里是如何删除作业的示例:
name = 'Newsletter'
queue = Sidekiq::Queue.new
queue.each do |job|
job.delete if job.klass.include? name
end
而不是 klass.include?你可以用任何其他的东西来匹配你正在寻找的东西。
于 2015-10-29T15:40:32.217 回答