redis-unique-queue 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -0
  3. data/lib/redis/unique/queue.rb +22 -1
  4. metadata +2 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: caaa5991bec51826b9f7300a829e2b349573c7b6
4
- data.tar.gz: fc069da52ddbe52353e88aaabf0319e9e1abd974
3
+ metadata.gz: 3fe0ab6091f352b3205cdbda893af5a397f90989
4
+ data.tar.gz: 303d6fc29e02f326c773ee3d81990cf30296dbc3
5
5
  SHA512:
6
- metadata.gz: 1f641a7ba739d33fb6123cbceed28d8e19c18dc7b896a4686462b7d6c0c491dcf6323d422a0d0438ac97c46fb07490bad87297e7685f2b2fd3e65883b1954222
7
- data.tar.gz: ed540fe52bb04bbbc0369d3ebf6228f72a386931317b578b133b4120057cf9574d7b0a30ecb3bc7b349c5f01ac442ecf4852094b8974902505f8e7dceeb565c7
6
+ metadata.gz: e32f7c9629bedc8e841fd86efbde03ee87b24e0a1b50c241822f9124a8ba3fe00f4fb759fb12619969bd2006dd28ede3be7526aeefe48aa8e257261a1a1ea0ea
7
+ data.tar.gz: dae1e9b8e2c24a3dbc0e81d729f1752b7c4d0be0f9dcc568ad09857e98281f86f0bf583781d8cb5576945283b424dbd0633c94a3c202daaaa96a89dc9da3096b
data/README.md CHANGED
@@ -53,6 +53,12 @@ You can pop data from the queue.
53
53
  result = q.pop
54
54
  ```
55
55
 
56
+ You can also pop all items in the queue in one op.
57
+
58
+ ```
59
+ result = q.pop_all
60
+ ```
61
+
56
62
  You can get the size of the queue.
57
63
 
58
64
  ```ruby
@@ -5,7 +5,7 @@ class Redis
5
5
  class Queue
6
6
  attr_reader :name
7
7
 
8
- VERSION = "0.0.6"
8
+ VERSION = "0.0.7"
9
9
 
10
10
  def initialize(name, redis_or_options = {})
11
11
  @name = name
@@ -29,6 +29,13 @@ class Redis
29
29
  result
30
30
  end
31
31
 
32
+ def pop_all
33
+ begin
34
+ success, result = attempt_atomic_pop_all
35
+ end while !success && result
36
+ result
37
+ end
38
+
32
39
  def front
33
40
  @redis.zrange(name, 0, 0).first
34
41
  end
@@ -67,6 +74,20 @@ class Redis
67
74
 
68
75
  private
69
76
 
77
+ def attempt_atomic_pop_all
78
+ result = nil
79
+ success = @redis.watch(name) do
80
+ result = all
81
+ if result
82
+ @redis.multi do |multi|
83
+ multi.del name
84
+ end
85
+ end
86
+ end
87
+
88
+ [success, result]
89
+ end
90
+
70
91
  def attempt_atomic_pop
71
92
  min_score = 0
72
93
  max_score = Time.now.to_f
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-unique-queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Misha Conway
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-11 00:00:00.000000000 Z
11
+ date: 2015-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -91,4 +91,3 @@ signing_key:
91
91
  specification_version: 4
92
92
  summary: A unique queue with atomic operations implemented in Redis
93
93
  test_files: []
94
- has_rdoc: