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.
- checksums.yaml +4 -4
- data/README.md +6 -0
- data/lib/redis/unique/queue.rb +22 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fe0ab6091f352b3205cdbda893af5a397f90989
|
4
|
+
data.tar.gz: 303d6fc29e02f326c773ee3d81990cf30296dbc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e32f7c9629bedc8e841fd86efbde03ee87b24e0a1b50c241822f9124a8ba3fe00f4fb759fb12619969bd2006dd28ede3be7526aeefe48aa8e257261a1a1ea0ea
|
7
|
+
data.tar.gz: dae1e9b8e2c24a3dbc0e81d729f1752b7c4d0be0f9dcc568ad09857e98281f86f0bf583781d8cb5576945283b424dbd0633c94a3c202daaaa96a89dc9da3096b
|
data/README.md
CHANGED
data/lib/redis/unique/queue.rb
CHANGED
@@ -5,7 +5,7 @@ class Redis
|
|
5
5
|
class Queue
|
6
6
|
attr_reader :name
|
7
7
|
|
8
|
-
VERSION = "0.0.
|
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.
|
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
|
+
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:
|