redis-unique-queue 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
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: