Sha256: a4102e4eb62a0009b70e814b82f9d75232ac712a37c7028a7b1ab233e36ddab6
Contents?: true
Size: 1.33 KB
Versions: 5
Compression:
Stored size: 1.33 KB
Contents
# RedisDedupe This is a weak deduper to make things like bulk email run safer. It is not a lock safe for financial/security needs because it uses a weak redis locking pattern that can have race conditions. However, imagine a bulk email job that loops over 100 users, and enqueues a background email for each user. If the job fails at iteration 50, a retry would enqueue all the users again and many will receive dupes. This would continue multiple times as the parent job continued to rerun. By marking that a subjob has been enqueued, we can let that isolated job handle its own failures, and the batch enqueue job can run multiple times without re-enqueueing the same subjobs. ## Installation Add this line to your application's Gemfile: gem 'redis_dedupe' And then execute: $ bundle Or install it yourself as: $ gem install redis_dedupe ## Usage ```ruby comment_id = 42 dedupe = RedisDedupe::Set.new($redis, "comment:42:notification") users.each do |user| dedupe.check(user.id) do send_email_to(user, comment_id) end end ``` ## Contributing 1. Fork it ( https://github.com/[my-github-username]/redis_dedupe/fork ) 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create a new Pull Request
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
redis_dedupe-0.0.6 | README.md |
redis_dedupe-0.0.5 | README.md |
redis_dedupe-0.0.4 | README.md |
redis_dedupe-0.0.3 | README.md |
redis_dedupe-0.0.2 | README.md |